刚在阿里云买了服务器,想给网站加个 SSL 证书,让网址前面显示小绿锁,可对着教程看半天,还是不知道从哪下手?Nginx、Apache、IIS 这些环境,配置步骤是不是差很多?免费的证书能不能用,申请起来麻烦吗?小编前阵子帮朋友的个人博客弄过,一开始也是一头雾水,踩了好几个坑,后来总算弄明白了。今天就把这些步骤、注意事项、常见错误的解决办法,全跟你说清楚,新手跟着做,准能搞定,一起往下看吧!
先说说:免费的 SSL 证书,阿里云上咋申请?
新手别急着买付费证书,阿里云有免费的 SSL 证书,够用了(就是只能绑一个域名,多个域名得买付费的)。申请步骤不复杂,小编一步步教你:
- 登录阿里云控制台,搜 “SSL 证书”,点进去找到 “免费证书”,选 “立即购买”。注意啊,免费证书是 “Symantec” 品牌的,一年有效期,到期能续。
- 买完之后,点 “证书申请”,填你要绑定的域名(比如www.xxx.com),验证方式选 “自动 DNS 验证”(最方便,不用手动改解析)。
- 等个 10 分钟左右,验证通过后,就能下载证书了。下载的时候注意选对服务器环境(比如你用 Nginx 就选 Nginx,别选错了,不然文件格式不对)。
小编朋友的博客用的就是免费证书,申请下来花了不到半小时,比想象中简单多了。就是有个小提醒,免费证书只能绑一个域名,要是你有 www 和非 www 两个域名,得申请两个,或者直接买付费的泛域名证书。
Nginx 环境下,证书咋配置?
Nginx 的配置步骤,关键在改配置文件,新手别慌,一步步来:
- 先把下载的证书文件(一般是两个,一个.key,一个.pem)传到服务器上,随便放个地方,比如 /usr/local/nginx/conf/ssl/(记得建个 ssl 文件夹)。
- 找到 Nginx 的配置文件,一般在 /usr/local/nginx/conf/nginx.conf,用 vim 打开(别告诉我你不会用 vim,新手可以用 FileZilla 下载下来改,改完再传上去)。
- 在 server 块里加这些代码(记得把域名和文件路径换成你自己的):
listen 443 ssl;server_name www.xxx.com;
ssl_certificate /usr/local/nginx/conf/ssl/xxx.pem;
ssl_certificate_key /usr/local/nginx/conf/ssl/xxx.key; - 保存完重启 Nginx,命令是 /usr/local/nginx/sbin/nginx -s reload。要是重启报错,多半是路径写错了,再检查检查。
小编朋友一开始就是路径写错了,把 ssl 文件夹写成了 sll,折腾半天没弄好,后来发现少个字母,你说多冤。重启成功后,访问 https:// 你的域名,能看到小绿锁,就成了。
Apache 环境配置,和 Nginx 差在哪?
Apache 的配置文件不一样,步骤也有点区别,小编帮另一个用 Apache 的朋友弄过,记不太清具体文件名,大概是这样:
- 把下载的证书文件(一般是.crt 和.key)传到服务器的 /etc/httpd/conf/ssl/ 目录下(没有就建一个)。
- 找到 Apache 的 ssl 配置文件,可能叫 httpd-ssl.conf,在 /etc/httpd/conf.d/ 目录里。打开后找 VirtualHost default:443 这一段。
- 改这几行:
SSLCertificateFile /etc/httpd/conf/ssl/xxx.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/xxx.key
ServerName www.xxx.com:443 - 保存后重启 Apache,命令是 systemctl restart httpd。要是报错,可能是没装 mod_ssl 模块,运行 yum install mod_ssl 试试,一般就能解决。
Apache 比 Nginx 多一个模块的问题,新手要是遇到启动失败,先看看是不是缺模块,别瞎改配置。
IIS 环境配置,步骤更简单?
IIS 是图形界面,操作起来可能比命令行容易点,适合不太懂代码的新手:
- 下载证书后,得到一个.pfx 文件,还有密码(下载的时候会显示,记下来)。
- 打开服务器的 “Internet 信息服务 (IIS) 管理器”,选中你的服务器,双击 “服务器证书”。
- 右边点 “导入”,选下载的.pfx 文件,输入密码,存储位置选 “个人”,确定。
- 选中你的网站,点 “绑定”,添加 “https”,端口 443,SSL 证书选刚才导入的,确定就好。
小编帮公司的一台老服务器弄过 IIS 配置,步骤是简单,就是导入的时候老提示密码错,后来发现是复制密码的时候多了个空格,你说气人不。所以输密码的时候,最好手动输一遍。
配置完了,网址前面还是没小绿锁?
这是新手最常遇到的问题,小编总结了几个可能的原因,你挨着排查:
- 是不是漏装了中间证书?下载证书的时候,阿里云会给一个 “chain.pem”(Nginx/Apache)或者 “根证书”,得一起配置上。Nginx 里要加一行 ssl_trusted_certificate / 路径 /chain.pem; 不然浏览器不认。
- 端口是不是没开放 443?去阿里云控制台的安全组看看,有没有允许 443 端口入站,没开的话,加个规则就行。
- 网站里是不是还有 http 的链接?比如图片、JS 文件用的是 http 开头,浏览器会提示 “混合内容”,把这些链接改成 https 就行,或者用 // 开头(自动适配)。
朋友的博客一开始就是有张图片用的 http,结果小绿锁时有时无,把图片链接改了之后,就一直绿着了。
自问自答:这些问题,你可能也想问
问:免费证书到期了,续期麻烦吗?
答:不麻烦!到期前一周,阿里云会发提醒,你点 “续期”,跟第一次申请差不多,验证通过后,下载新证书,重新配置一遍就行。记得把旧证书删了,不然容易弄混。
问:同一个服务器,能配置多个 SSL 证书吗?
答:能!Nginx 里可以建多个 server 块,每个绑定不同域名和证书;Apache 同理;IIS 里给不同网站添加不同绑定就行。小编见过一个服务器绑了 5 个证书,没问题。
问:配置 SSL 证书后,网站访问速度会变慢吗?
答:会慢一点点,几乎感觉不出来。小编测过,http 打开页面 1.2 秒,https1.4 秒,差 0.2 秒,用户根本察觉不到。但安全多了,还是值得的。
小编的一点想法
给网站加 SSL 证书,看着复杂,其实跟着步骤做,一点不难。新手建议先申请免费证书练手,配置的时候多备份配置文件,错了还能恢复。遇到问题别慌,按小编说的那几个排查步骤试试,大概率能解决。
朋友的博客弄好之后,他说看着网址前面的小绿锁,感觉网站一下子专业了不少。其实啊,现在浏览器对 http 网站越来越不友好,不加 SSL 证书,用户可能都不敢访问,所以早弄早省心,你说对吧?