本文主要是介绍Nginx下配置,SSL For Free网站获取Let's Encrypt免费SSL证书,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、背景
注册了个小程序,发现后台必须走HTTPS
协议,可以在 ssl for free 免费申请证书,尝试了下,并且配置到了服务器。
二、申请证书
SSl For Free
1.输入域名创建证书
创建证书。
2.证书文件获取
选择手动上传验证文件,获取证书
手动上传验证文件
获取验证文件,并在网站跟目录创建目录mkdir -p .well-known/acme-challenge
,把下载的文件上传到该目录
验证文件上传
3.证书下载
证书下载下来包含三个文件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 配置
1.方式一(http跳转到https配置):
配置参考如下
#
# The default server
#
server {listen 443;server_name test.domain.com;index index.php default.html default.htm default.php;root /data/test.domain.com;ssl on;ssl_certificate /data/ssl/cert_chain.crtssl_certificate_key /data/ssl/test.domain.com.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.domain.com;rewrite ^/(.*) https://test.domain.com/$1 permanent;
}
重启nginx 。.
2.方式二(http,https同时可以访问配置):
配置如下
server{listen 80;#listen 443 ssl; # 关键配置项1server_name test.domain.com;#ssl_certificate /data/ssl/cert_chain.crt; # 关键配置项2#ssl_certificate_key /data/ssl/test.domain.com.key; # 关键配置项3index index.php;root /www/webroot/test.domain.com;access_log /www/webroot/test.domain.com/access.log main;location / {index index.php index.html;if ( !-e $request_filename){rewrite ^/(.*)$ /index.php?s=$1 last;break;}}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {expires 30d;}location ~ .*\.(js|css)?$ {expires 30d;}location ~ .*\.(php|php5)?$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;}
}
重启nginx 。
这篇关于Nginx下配置,SSL For Free网站获取Let's Encrypt免费SSL证书的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!