Nginx配置SSL证书,提高网络安全性
首先区别Http与Https
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
配置 HTTPS 要用到私钥 example.key 文件和 example.crt 证书文件
CSR:Cerificate Signing Request,证书签署请求文件,里面包含申请者的 DN(Distinguished Name,标识名)和公钥信息,在第三方证书颁发机构签署证书的时候需要提供。证书颁发机构拿到 CSR 后使用其根证书私钥对证书进行加密并生成 CRT 证书文件,里面包含证书加密信息以及申请者的 DN 及公钥信息
Key:证书申请者私钥文件,和证书里面的公钥配对使用,在 HTTPS 『握手』通讯过程需要使用私钥去解密客戶端发來的经过证书公钥加密的随机数信息,是 HTTPS 加密通讯过程非常重要的文件,在配置 HTTPS 的時候要用到网络中有许多地方可以申请免费的证书,比如:
Let’s Encrypt 官网:https://letsencrypt.org
阿里云证书 官网:https://common-buy.aliyun.com/?commodityCode=cas
Freessl 官网:https://freessl.cn/
我是在阿里云上免费申请的
申请证书大概10分钟就可以审核通过,然后就是下载证书,选择nginx
然后把下载下来的两个文件放进nginx的根目录路
然后进入nginx.conf中配置
server {listen 443 ssl;
server_name ythan.top;
ssl_certificate ythan.top.pem;
ssl_certificate_key ythan.top.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
root /www/wordpress;
location / {
index index.php index.html index.htm;
if(-f $request_filename/index.html){
rewrite (.*)$1/index.html break;
}
if(-f $request_filename/index.php){
rewrite (.*)$1/index.php;
}
if(!-f $request_filename){
rewrite (.*) /index.php;
}
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
}
完了之后重启nginx
nginx -s reload
记得打开服务器的443端口号
如果再次进去你的网站是自动下载一个php文件,是因为chrome的缓存导致,这个问题折腾了我好几个小时,然后如果你原网站虽然有证书,但是显示不安全的话就是应为你网站当中存在一些图片来自http中,修改一下图片的来源即可。
没有证书和有证书相比较的效果:
最后一点,把网站强制跳转到https的链接中,在nginx.conf配置文件中加入以下一段代码:
rewrite ^(.*)$ https://$host$1 permanent;
以上是 Nginx配置SSL证书,提高网络安全性 的全部内容, 来源链接: utcz.com/a/55773.html