过年了没啥教程写的,放假了我也很懒,最近这两天也有人学习建站想要搞个SSL证书玩玩,但是完全没有建站经验,这些都不懂。
成功做过一遍的人会觉得申请+配置SSL证书很简单,但是完全没接触过的小白就会很迷,所以我就写个教程吧。
因为 AlphaSSL 申请网站失效,所以本教教程前半部分的申请SSL步骤失效,后面的Nginx依然通用。
目前颁发免费SSL证书我只知道:AlphaSSL、Let’s Encrypt SSL、StartSSL(沃通)
StartSSL(沃通)因为违反了SSL证书的规定,导致2016年10月后新申请的SSL证书都被浏览器拉黑了,所以不建议使用。
AlphaSSL是比较早的一个,支持免费泛域名SSL证书,最多可以签1年。
Let’s Encrypt SSL则是前段时间很火的一个免费SSL证书,最多可以签3个月。
免费SSL证书各个之间也没什么区别,主要是颁发机构的区别,其他的都没影响,所以我作为一个懒人能签多次时间就签多长时间,所以我选了AlphaSSL。
本教程中申请+配置SSL证书均以 toyoo.pw
为例,请自行替换为自己的域名,不要傻傻的照着教程写示例域名!
申请SSL证书
申请SSL证书前,请先关闭域名的Whois保护,避免SSL证书申请时无法扫描到域名注册时填写的域名邮箱,导致无法申请SSL证书!如果不确定,请查询域名Whois信息,看看是否可以查询到你的域名注册邮箱,域名Whois信息查询:站长工具
我们首先在本地 新建三个空文本文件 分别命名为: toyoo.pw.csr、toyoo.pw.key、toyoo.pw.crt
CSR是申请SSL证书需要的文件,KET是对应的证书密匙,CRT是证书文件。
生成CSR文件和KEY密匙
申请SSL证书的第一步就是生成CSR和KEY文件。
我们打开 CSR文件在线生成工具 ,填写 组织/公司、部门/单位、城市、省份、邮箱和域名。
国家、加密方式、哈希签名算法和加密位数都默认就好,不要改。
邮箱和域名必须填写正确。
AlphaSSL支持免费泛域名SSL证书,所以域名我们填写为 *.toyoo.pw
泛域名SSL证书指的是,这个SSL证书,你可以用在任何以 toyoo.pw
为主的一级域名(toyoo.pw)、二级域名(xxx.toyoo.pw)等。
填写完毕后,点击 生成CSR文件 按钮。
然后下面就会出现两段代码,分别是 CSR 和 KEY 。
然后把 CSR和KEY代码 分别保存到我们一开始新建的空文本文件中: toyoo.pw.csr、toyoo.pw.key
申请SSL证书
我们打开 AlphaSSL证书申请网站 ,然后把上面我们生成的 CSR代码 复制到第一个大文本框中。
然后填写下面的邮箱(名、姓、电话号码是可选的),除了邮箱必须正确(建议和上面生成CSR的邮箱一致),其他的随意。
然后点击 Verify > 按钮提交SSL证书申请信息。
然后网站会检测 CSR代码 并询问你要申请的域名是否为 *.toyoo.pw
,检查无错误后,点击 OK 按钮。
然后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.pw.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.pw.crt
我们自己的SSL证书后面。
也就是我们自己的SSL证书代码的最后一行 -----END CERTIFICATE-----
后面空出一行后再粘贴上 中级证书代码,大概格式如下:
-----BEGIN CERTIFICATE----- XXXXXXXXXXXXXXXXXXXXX XXXXXXX自己证书XXXXXXXX XXXXXXXXXXXXXXXXXXXXX -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- XXXXXXXXXXXXXXXXXXXXX XXXXXXX中级证书XXXXXXXX XXXXXXXXXXXXXXXXXXXXX -----END CERTIFICATE-----
修改并保存SSL证书文件后,我们双击打开 toyoo.pw.crt
证书文件,就会看到如 下下下下图所示的证书信息。
如果没问题,那么到这里我们申请免费SSL证书就完成了。接下来是Nginxi配置SSL证书的步骤。
Nginx配置SSL证书
因为我一直使用的是 lnmp.org 的lnmp一键包,所以以这个一键包为例,其他的一键包也差不多,至于面板,肯定都有SSL证书添加的地方。
配置示例:
首先通过SFTP链接你的网站服务器,然后找到 /usr/local/nginx/conf/vhost/域名.conf
文件并下载到本地(以 toyoo.pw.conf
为例)。
然后我们本地打开 toyoo.pw.conf
文件并修改,下面是修改后的完整配置文件示例:
注意:只需要看18行以前就行了,后面的不要跟着示例走,以前是什么就是什么,不需要和示例一模一样。
server { listen 80; listen 443 ssl http2; ssl on; ssl_certificate /root/toyoo.pw.crt; ssl_certificate_key /root/toyoo.pw.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000"; server_name toyoo.pw; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/toyoo.pw; 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.pw.crt; # 指定SSL证书 .crt 位置 ssl_certificate_key /root/toyoo.pw.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.pw.conf
到 /usr/local/nginx/conf/vhost
文件夹并覆盖原文件(注意备份)。
然后再把 toyoo.pw.crt、toyoo.pw.key
上传到 toyoo.pw.conf
文件中指定的地方,比如示例中的 /root
文件夹下。
然后SSH链接网址服务器并重启Nginx:
lnmp nginx restart
如果报错了,那么会提示是哪一行出错,然后查看哪一行存在问题,或者在下面留言问我。
如果没有报错,那么就尝试打开 https://域名/
看一看浏览器地址栏前是否有绿锁了!
当然,没有也不要急,你能进去 https 了,说明SSL配置基本无误,没有绿锁多半是网站内的 内链和外链 没有都设置为 https,把网站内的所有链接都改为 https 的就行了,可以通过 F12审查元素
来定位错误的元素。
其他说明
重启Nginx报错 或 配置后 火狐浏览器/手机浏览器证书报错
有部分人因为未知原因,按以上教程配置SSL后,重启Nginx报错,或者配置完 火狐浏览器和手机浏览器报错,所以解决方法如下:
只要在你自己的证书代码前面再加上一个 GlobalSign的根证书代码 就可以了。
-----BEGIN CERTIFICATE----- XXXXXXXXXXXXXXXXXXXXX XXXXXXX自己证书XXXXXXXX XXXXXXXXXXXXXXXXXXXXX -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- XXXXXXXXXXXXXXXXXXXXX XXXXXXX中级证书XXXXXXXX XXXXXXXXXXXXXXXXXXXXX -----END CERTIFICATE----- -----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-----
教程到这里基本就结束了,有什么错误或者需要补充的可以在下面的评论里留言!
转载请超链接注明:月下博客 » 『失效』免费申请SSL证书 – AlphaSSL 及 LNMP一键包Nginx配置SSL证书教程
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!