注册了个小程序,发现后台必须走HTTPS
协议,经朋友介绍,可以在 ssl for free 免费申请证书,尝试了下,并且配置到了服务器,但是中间也遇到问题,记录下.
申请证书
输入域名创建证书
证书文件获取
选择手动上传验证文件,获取证书
获取验证文件,并在网站跟目录创建目录mkdir -p .well-known/acme-challenge
,把下载的文件上传到该目录
证书下载
我们的正式下载下来包含三个文件private.key
,certificate.crt
,ca_bundle.crt
.
Nginx 的ssl配置要求证书文件是一个,需要把certificate.crt
,ca_bundle.crt
合并.我刚开始根据这个教程进行合并处理Nginx ssl,用linux下的cat
命令进行合并,一直报错
SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line
合并的有问题,证书文件的尾部分隔符出错.我改成使用notepad++
,对两个文件进行合并处理.结果如下图
Nginx 配置
配置参考如下
#
# The default server
#
server {
listen 443;
server_name test.vstary.com;
index index.php default.html default.htm default.php;
root /data/test.vstary.com;
ssl on;
ssl_certificate /data/ssl/cert.crt;
ssl_certificate_key /data/ssl/private.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
注意,一定要开放443端口
其它
因为浏览器默认是走http
协议,所以建议在写个配置文件,重定向到当前https
协议的web.
配置如下
server{
listen 80;
server_name test.vstary.com;
rewrite ^/(.*) https://test.vstary.com/$1 permanent;
}
重启nginx ,就可以了.了.