公司的网站需要接入https,借此机会研究了下,小有所得,特此分享。
这第一步呢,自然是申请证书,这么高端大气上档次(也许还要花钱)的操作公司自然不会让我来搞,所以我直接到手的就是这个(免费的还是很好申请的,有需要请自行百度)
这里用nginx为例,打开nginx里面就是证书和key
首先把这两个证书放在服务器nginx安装目录下的一个文件夹里,文件夹名字随便起,不过为了便于识别,就叫做cert
服务器的配置超级简单,这里列出两种方法,我第二种成功了,第一种没有成功
第一种:
server { listen 443; server_name localhost; ssl on; root html; index index.html index.htm; ssl_certificate cert/xxx.pem;注意这里,这样子写会报错,正确做法是写全路径/usr/local/nginx/cert/*******.crt;key也同样的写法,这里的pem文件和刚刚截图的crt文件是一个意思 ssl_certificate_key cert/xxx.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }
第二种方法:
这种方法是我成功了的,也比较推荐,毕竟代码少~
server{ listen 443 ssl; server_name _; ssl on; ssl_certificate /usr/local/nginx/cert/******.crt; ssl_certificate_key /usr/local/nginx/cert/*********.key; }
搞完了保存退出就好了,重启下nginx,试试https访问。
但是你会发现直接输入网址,比如www.xxx.com是不会进入https的,这时候就需要写一个跳转规则
方法一:
rewrite ^(.*)$ https://$server_name$1 permanent;
方法二:适用于 80端口和443 配置在同一个 server{}内
if ($server_port = 80) { rewrite ^(.*)$ https://kaisuo.qbchoice.com$1 permanent; }
配置完网站还需要注意的就是屏蔽掉IP访问。方法也很是简单
server { listen 80 default; return 500; }
0 条评论