为什么?
如果不知道为什么,请绕路。
会不会很贵?
随着阿里云、腾讯云等相继退出 ssl证书服务,ssl 证书已经比较亲民。推荐大家使用收费的 ssl 证书,相对于你的业务量来说,ssl 证书真的不贵。如果你是个人站长,例如本人,不想花费,那么还是有免费的午餐
https://www.sslforfree.com/
申请
sslforfree 不支持泛域名,但是一个证书可以包含100个域名,对于大多数情况下都是够用的,比较蛋疼的是一次输入多个域名,需要验证的过程会非常麻烦,因为每个域名都需要上传一个验证文件或者增加一条 TXT 记录来验证域名的有效性。所以建议大家一开始不用太贪心,输入实在要使用的域名即可,如果新增了域名,后面还是可以通过申请新的证书来解决。
多个域名通过空格符间隔开。
点击「Create」就是进入验证界面,验证完毕之后就可以下载证书了。
安装证书
打开压缩包里面有3个文件
- private.key
- ca_bundle.crt
- certificate.crt
三个文件分别对应 Apache 配置里面的:
- SSLCertificateKeyFile
- SSLCertificateFile
- SSLCertificateChainFile
上面的对应关系大家不要对应错了。
yum install mod_ssl openssl
编辑 /etc/httpd/conf/httpd/conf
LoadModule ssl_module modules/mod_ssl.so
Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /www
SSLEngine on
SSLHonorCipherOrder on
# 禁止SSLv2 SSLv3协议
SSLProtocol all -SSLv2 -SSLv3
#禁止RC4,禁止SF
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
SSLCertificateFile /sslforfree/certificate.crt
SSLCertificateKeyFile /sslforfree/private.key
SSLCertificateChainFile /sslforfree/ca_bundle.crt
</VirtualHost>
注意:
- 使用绝对路径指向证书文件
- 如果一个 IP 供应多个域名和证书,一定要加上 NameVirtualHost 443
遇到的坑
在一个 IP 供应多个域名和证书这个问题,折腾了很久,主要的域名是 apache 版本一定要高于 2.2.12,才支持 SNI。支持 SNI 才能实现一个 IP 供给多个证书。另外就是忘记了 NameVirtualHost 443,老是只有一个证书生效,另外一个证书失效。sslforfree虽然是免费的,但是因为没3个月就需要 renew 一次,如果嫌麻烦,还是推荐使用付费证书服务。
自动跳转https
安装 ssl 证书之后,默认情况下用户是可以使用 http 和 https 两种方式来访问服务,如果希望自动跳转,推荐使用下面的方式
<VirtualHost *:80>
ServerName www.example.com
# 全站跳转
Redirect permanent / https://www.example.com
# 指定跳转
Redirect permanent /user/login https://www.example.com/user/login
</VirtualHost>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。