注:有效期只有90天,可以续期:用第一次申请的key和crt进行续期,最后会生成一个新的domain-crt,将该文件更新到服务器即可
https://zerossl.com 申请免费SSL证书步骤的详细介绍:
一、登录https://zerossl.com,点击“ONLINE TOOLS" 按钮,选择在线方式申请免费SSL证书。
第一步、登录https://zerossl.com,选择在线申请方式
说明:这里也提供下载软件,安装在本地PC上,运行的办法。但由于这是国外网站,下载速度较慢,而且在线直接申请很简单,不推荐使用本地安装软件的方式。
二、点击“START"按钮,开始申请SSL证书
第二步、点击“START"按钮
三、配置
配置
“在第1步”的红色提示处,输入自己的电子邮箱。这是可选项,也可以选择不输入。
“在第1步”的红色提示处,输入需要Https加密访问的网址。
“在第3步”的红色提示处,必须勾选"HTTP verification"。
“在第4步”的红色提示处,“Accept ZeroSSL TOS"和"Accept Let’s Encrypt SA(pdf)”。
“在第5步”的红色提示处,点击”NEXT"按钮。
点击”NEXT"按钮后,页面有弹窗询问你是否生成没有"www"的网址的SSL证书格式。个人建议点击“No"按钮,因为在之后的验证环节,这种模式的在线验证有可能失败。
选择是否生成没有"www"的网址的SSL证书格式的弹窗后,开始生成CSR,如上图所示,需要等一会儿。8 . 如上图所示,CSR生成后,点击“NEXT"按钮,用于生成account key
如上图所示,又需要等一会儿,生成了下图所示的RSA Private Key. 建议点击红色方框所示的下载按钮下载已经生成RSA Private Key和CSR,以防之后验证失败或意外网络中断需要重复申请RSA Private Key和CSR。点击“NEXT”按钮进入验证环节。
四、验证
进入验证页面后,根据要求使用get方式访问"http://你的网址Domain/.well-known/acme-challenge/下面页面File的字符串"时,可以得到页面中"Text"的字符串,以便实现验证。
为了达到验证的目的,可以使用2种方式,即在Nginx或Apache中设置静态访问文件, 或者修改web程序。我选择修改程序
我用的是php,无论yii2还是thinkphp设置路由访问对应的方法即可
在服务器验证设置好后,在验证页面点击“NEXT”按钮进行验证。
五、 导出生成的SSL证书
到了这个页面就生成了正式的SSL证书,请下载红色方块所示的证书和密钥。
注意:这个免费SSL证书有效期为90天,到期后可以免费续期,即重复这个注册过程,再次生成新的免费SSL证书。
注意:下载的证书文件的名称是"domain-crt.txt",需要修改名称为"domain.crt"。
注意:下载的密钥的名称是domain-key.txt,需要修改名称为"domain.key"。
注意:记得一定要修改这两个文件,名称无所谓,但证书文件的文件扩展名必须是".crt", 密钥的文件扩展名必须是".key"。我在这里踩了坑,没有改扩展名,造成nginx找不到这两个文件。
六、设置web服务器
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;include /etc/nginx/mime.types;default_type application/octet-stream;server { listen 80; server_name 需要访问的网址; rewrite ^(.*)$ https://$host$1 permanent; #强制见80端口的访问转到443的加密端口 location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://localhost:2000/; proxy_redirect off; }}server { listen 443 ssl; server_name 需要访问的网址; ssl on; ssl_certificate 服务器存放ssl证书文件绝对路径/domain.crt; ssl_certificate_key 服务器存放ssl证书密钥文件绝对路径/domain.key; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://localhost:2000; proxy_redirect off; }}
}
原文地址:http://cnodejs.org/topic/58ee36e0a92d341e48cfe7e9