Let’s Encrypt SSL则是前段时间很火的一个免费SSL证书,最多可以签3个月。
免费SSL证书各个之间也没什么区别,主要是颁发机构的区别,其他的都没影响,所以我作为一个懒人能签多次时间就签多长时间,所以我选了AlphaSSL。
本教程中申请+配置SSL证书均以
toyoo.ml
为例,请自行替换为自己的域名,不要傻傻的照着教程写示例域名!
申请SSL证书
申请SSL证书前,请先关闭域名的Whois保护,避免SSL证书申请时无法扫描到域名注册时填写的域名邮箱,导致无法申请SSL证书!如果不确定,请查询域名Whois信息,看看是否可以查询到你的域名注册邮箱,域名Whois信息查询:站长工具
我们首先在本地 新建三个空文本文件 分别命名为: toyoo.ml.csr、toyoo.ml.key、toyoo.ml.crt
CSR是申请SSL证书需要的文件,KET是对应的证书密匙,CRT是证书文件。
生成CSR文件和KEY密匙
申请SSL证书的第一步就是生成CSR和KEY文件。
我们打开 CSR文件在线生成工具 ,填写 组织/公司、部门/单位、城市、省份、邮箱和域名。
国家、加密方式、哈希签名算法和加密位数都默认就好,不要改。
邮箱和域名必须填写正确。
AlphaSSL支持免费泛域名SSL证书,所以域名我们填写为 *.toyoo.ml
泛域名SSL证书指的是,这个SSL证书,你可以用在任何以 toyoo.ml
为主的一级域名(toyoo.ml)、二级域名(xxx.toyoo.ml)等。
填写完毕后,点击 生成CSR文件 按钮。
然后下面就会出现两段代码,分别是 CSR 和 KEY 。
然后把 CSR和KEY代码 分别保存到我们一开始新建的空文本文件中: toyoo.ml.csr、toyoo.ml.key
申请SSL证书
我们打开 AlphaSSL证书申请网站 ,然后把上面我们生成的 CSR代码 复制到第一个大文本框中。
然后填写下面的邮箱、名、姓、电话号码,除了邮箱必须正确(建议和上面生成CSR的邮箱一致),其他的随意。
然后点击 Verify > 按钮提交SSL证书申请信息。
然后网站会检测 CSR代码 并询问你要申请的域名是否为 *.toyoo.ml
,检查无错误后,点击 确定 按钮。
然后SSL证书申请网站会开始查询申请SSL证书 Whios信息中 域名邮箱(注册域名时候写的邮箱),如果正常情况下,第一个邮箱就会是你的域名邮箱,点击这个邮箱,AlphaSSL就会向你这个邮箱里发送确认邮件,一般等待1-5分钟就会收到邮件了。
如果只显示了如下下图后面那几个邮箱,没有显示你的域名注册邮箱,那么说明你的域名可能是 刚注册 或 没有关闭Whios保护 或 刚关闭Whios保护 查询有缓存,所以你可能需要关闭Whios保护或者等待12-24小时后,才能继续申请。
域名Whois信息查询网站:站长工具,如果 注册域名 或者 关闭Whios保护 24小时后依然无法查询到你的域名注册信息,那么请联系域名注册商解决。
邮件确认SSL证书申请
在你的域名注册邮箱中,等待AlphaSSL给你发SSL证书申请确认邮件,邮件内容大概如下图。
点击红框中的 链接,会进入到AlphaSSL的确认网站。
确认SSL证书申请信息正确后点击 I APPROVE 按钮,代表同意。
然后网站就会提示把SSL证书信息发送到你的邮箱了。
现在重新回到邮箱,等待SSL证书信息邮件。
收到邮件后,翻到邮件最下面找到你的SSL证书代码:
- OUR SSL CERTIFICATE
- ————————————————–
- (Formatted for the majority of web server software including IIS and Apache
- based servers):
- —–BEGIN CERTIFICATE—–
- XXXXXXXXXXXXXXXXXXXX
- XXXXXXXXXXXXXXXXXXXX
- XXXXXXXXXXXXXXXXXXXX
- —–END CERTIFICATE—–
然后把从 -----BEGIN CERTIFICATE-----
到 -----END CERTIFICATE-----
的内容(包括这两行自身)都复制到最开始我们新建的空文本文件中 toyoo.ml.crt
现在我们已经有了 CSR文件、KEY文件、SSL文件
,但是还不够,还需要SSL证书颁发机构的中级证书文件。
在SSL证书信息的邮件中,提到了中级证书的获取地址:https://www.alphassl.com/support/install-root-certificate.html
进入后我们找到第一个SSL中级证书代码:SHA-256 – Orders March 31, 2014 and After
- —–BEGIN CERTIFICATE—–
- MIIETTCCAzWgAwIBAgILBAAAAAABRE7wNjEwDQYJKoZIhvcNAQELBQAwVzELMAkG
- A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
- b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw
- MDBaFw0yNDAyMjAxMDAwMDBaMEwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
- YWxTaWduIG52LXNhMSIwIAYDVQQDExlBbHBoYVNTTCBDQSAtIFNIQTI1NiAtIEcy
- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2gHs5OxzYPt+j2q3xhfj
- kmQy1KwA2aIPue3ua4qGypJn2XTXXUcCPI9A1p5tFM3D2ik5pw8FCmiiZhoexLKL
- dljlq10dj0CzOYvvHoN9ItDjqQAu7FPPYhmFRChMwCfLew7sEGQAEKQFzKByvkFs
- MVtI5LHsuSPrVU3QfWJKpbSlpFmFxSWRpv6mCZ8GEG2PgQxkQF5zAJrgLmWYVBAA
- cJjI4e00X9icxw3A1iNZRfz+VXqG7pRgIvGu0eZVRvaZxRsIdF+ssGSEj4k4HKGn
- kCFPAm694GFn1PhChw8K98kEbSqpL+9Cpd/do1PbmB6B+Zpye1reTz5/olig4het
- ZwIDAQABo4IBIzCCAR8wDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8C
- AQAwHQYDVR0OBBYEFPXN1TwIUPlqTzq3l9pWg+Zp0mj3MEUGA1UdIAQ+MDwwOgYE
- VR0gADAyMDAGCCsGAQUFBwIBFiRodHRwczovL3d3dy5hbHBoYXNzbC5jb20vcmVw
- b3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nbG9iYWxzaWdu
- Lm5ldC9yb290LmNybDA9BggrBgEFBQcBAQQxMC8wLQYIKwYBBQUHMAGGIWh0dHA6
- Ly9vY3NwLmdsb2JhbHNpZ24uY29tL3Jvb3RyMTAfBgNVHSMEGDAWgBRge2YaRQ2X
- yolQL30EzTSo//z9SzANBgkqhkiG9w0BAQsFAAOCAQEAYEBoFkfnFo3bXKFWKsv0
- XJuwHqJL9csCP/gLofKnQtS3TOvjZoDzJUN4LhsXVgdSGMvRqOzm+3M+pGKMgLTS
- xRJzo9P6Aji+Yz2EuJnB8br3n8NA0VgYU8Fi3a8YQn80TsVD1XGwMADH45CuP1eG
- l87qDBKOInDjZqdUfy4oy9RU0LMeYmcI+Sfhy+NmuCQbiWqJRGXy2UzSWByMTsCV
- odTvZy84IOgu/5ZR8LrYPZJwR2UcnnNytGAMXOLRc3bgr07i5TelRS+KIz6HxzDm
- MTh89N1SyvNTBCVXVmaU6Avu5gMUTu79bZRknl7OedSyps9AsUSoPocZXun4IRZZ
- Uw==
- —–END CERTIFICATE—–
然后把中级证书代码从 -----BEGIN CERTIFICATE-----
到 -----END CERTIFICATE-----
的内容(包括这两行自身)复制到开始我们新建的空文本文件中 toyoo.ml.crt
我们自己的SSL证书后面。
也就是我们自己的SSL证书代码的最后一行 -----END CERTIFICATE-----
后面空出一行后再粘贴上 中级证书代码,大概格式如下:
- —–BEGIN CERTIFICATE—–
- XXXXXXXXXXXXXXXXXXXXX
- XXXXXXX自己证书XXXXXXXX
- XXXXXXXXXXXXXXXXXXXXX
- —–END CERTIFICATE—–
- —–BEGIN CERTIFICATE—–
- XXXXXXXXXXXXXXXXXXXXX
- XXXXXXX中级证书XXXXXXXX
- XXXXXXXXXXXXXXXXXXXXX
- —–END CERTIFICATE—–
修改并保存SSL证书文件后,我们双击打开 toyoo.ml.crt
证书文件,就会看到如 下下下下图所示的证书信息。
如果没问题,那么到这里我们申请免费SSL证书就完成了。接下来是Nginxi配置SSL证书的步骤。
Nginx配置SSL证书
因为我一直使用的是 lnmp.org 的lnmp一键包,所以以这个一键包为例,其他的一键包也差不多,至于面板,肯定都有SSL证书添加的地方。
配置示例:
首先通过SFTP链接你的网站服务器,然后找到 /usr/local/nginx/conf/vhost/域名.conf
文件并下载到本地(以toyoo.ml.conf
为例)。
然后我们本地打开 toyoo.ml.conf
文件并修改,下面是修改后的完整配置文件示例:
注意:只需要看18行以前就行了,后面的不要跟着示例走,以前是什么就是什么,不需要和示例一模一样。
- server
- {
- listen 80;
- listen 443 ssl http2;
- ssl on;
- ssl_certificate /root/toyoo.ml.crt;
- ssl_certificate_key /root/toyoo.ml.key;
- ssl_session_cache shared:SSL:10m;
- ssl_session_timeout 10m;
- add_header Strict–Transport–Security “max-age=31536000”;
- server_name toyoo.ml;
- index index.html index.htm index.php default.html default.htm default.php;
- root /home/wwwroot/toyoo.ml;
- if ( $scheme = http ){
- return 301 https://$server_name$request_uri;
- }
- # 只需要看前面的代码就行了,后面的不需要和示例一致!!!
- include none.conf;
- #error_page 404 /404.html;
- location ~ [^/]\.php(/|$)
- {
- # comment try_files $uri =404; to enable pathinfo
- try_files $uri =404;
- fastcgi_pass unix:/tmp/php–cgi.sock;
- fastcgi_index index.php;
- include fastcgi.conf;
- #include pathinfo.conf;
- }
- location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
- {
- expires 30d;
- }
- location ~ .*\.(js|css)?$
- {
- expires 12h;
- }
- access_log off;
- }
代码解释
主要是在 listen 80;
下面添加SSL证书的信息。
如果你的Nginx是 1.10.x 以后的版本(lnmp 1.3满足),那么就支持http2了
- listen 443 ssl http2;
- # 监听HTTPS端口
- ssl on;
- # 开启SSL
- ssl_certificate /root/toyoo.ml.crt;
- # 指定SSL证书 .crt 位置
- ssl_certificate_key /root/toyoo.ml.key;
- # 指定SSL证书密匙 .key 位置
- ssl_session_cache shared:SSL:10m;
- # 设置SSL缓存大小
- ssl_session_timeout 10m;
- # 设置SSL缓存时间
- add_header Strict–Transport–Security “max-age=31536000”;
- # 这个代码的意思是,当访客访问你网站的HTTPS域名后,下次再访问HTTP,浏览器会自动转到HTTPS,而不需要访客先访问网站服务器,然后网站服务器再重定向到HTTPS。31536000是秒,代表一年内有效(如果不清理浏览器缓存)
这段代码指的是强制所有访问 HTTP域名 的都重定向到HTTPS。
如果你不需要访客强制访问 HTTPS ,那么不需要添加这段代码。
- if ( $scheme = http ){
- return 301 https://$server_name$request_uri;
- }
修改并保存后,上传 toyoo.ml.conf
到 /usr/local/nginx/conf/vhost
文件夹并覆盖原文件(注意备份)。
然后再把 toyoo.ml.crt、toyoo.ml.key
上传到 toyoo.ml.conf
文件中指定的地方,比如示例中的 /root
文件夹下。
然后SSH链接网址服务器并重启Nginx:
- lnmp nginx restart
如果报错了,那么会提示是哪一行出错,然后查看哪一行存在问题,或者在下面留言问我。
如果没有报错,那么就尝试打开 https://域名/
看一看浏览器地址栏前是否有绿锁了!
当然,没有也不要急,你能进去 https 了,说明SSL配置基本无误,没有绿锁多半是网站内的 内链和外链 没有都设置为 https,把网站内的所有链接都改为 https 的就行了,可以通过 F12审查元素
来定位错误的元素。
其他说明
重启Nginx报错 或 配置后 火狐浏览器/手机浏览器证书报错
有部分人因为未知原因,按以上教程配置SSL后,重启Nginx报错,或者配置完 火狐浏览器和手机浏览器报错,所以解决方法如下:
只要在你自己的证书代码前面再加上一个 GlobalSign的根证书代码 就可以了。
- —–BEGIN CERTIFICATE—–
- MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
- GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
- b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
- BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
- VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
- DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
- THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
- Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
- c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
- gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
- HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
- AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
- Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
- j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
- hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
- X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
- —–END CERTIFICATE—–
- —–BEGIN CERTIFICATE—–
- XXXXXXXXXXXXXXXXXXXXX
- XXXXXXX自己证书XXXXXXXX
- XXXXXXXXXXXXXXXXXXXXX
- —–END CERTIFICATE—–
- —–BEGIN CERTIFICATE—–
- XXXXXXXXXXXXXXXXXXXXX
- XXXXXXX中级证书XXXXXXXX
- XXXXXXXXXXXXXXXXXXXXX
- —–END CERTIFICATE—–
教程到这里基本就结束了,有什么错误或者需要补充的可以在下面的评论里留言