月下博客

『失效』免费申请SSL证书 – AlphaSSL 及 LNMP一键包Nginx配置SSL证书教程

本文最后更新于 2018年7月19日 12:09 可能会因为没有更新而失效。如已失效或需要修正,请留言!

过年了没啥教程写的,放假了我也很懒,最近这两天也有人学习建站想要搞个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证书教程
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!