前言
HTTPS有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
方法 /步骤
笔者写这篇文章的时候,腾讯云还可以申请个人免费型HTTPS证书,但是这个不在本文考虑范围之内,如果想了解可以点击进入了解
第一步:使用OpenSSL生成自签证书(Windows环境)
1. 安装OpenSSL:
编译好的OpenSSL下载地址:
此文下载的是64位的:Win64OpenSSL_Light-1_1_1g.exe
下载后安装!
2. 将安装成功的路径bin目录,添加到Win系统的Path路径:
3. 在 D:\OpenSSL-Win64 目录下创建ssl目录,以后自签名证书存到这个目录;
4. 启动 cmd 或者Powershell 命令行程序,切到 D:\OpenSSL-Win64\ssl 目录,开始创建证书。
- 创建服务器私钥
openssl genrsa -des3 -out server.key 2048
5. 创建CSR证书请求文件
openssl req -new -key server.key -out server.csr
(名字公司随便填)
6. 备份有秘密的私钥文件
copy server.key server.key.orig
7. 去掉私钥文件的密码
openssl rsa -in server.key -out server.key
8. 使用服务器私钥签署服务器公钥证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
9. 服务端证书生成完毕
第二步:配置证书到Nginx
1. 将ssl整个文件夹,拷贝到nginx目录中,conf下
2. 配置Nginx中conf下nginx.conf文件
- 主要放开443 的server
server {
listen 443 ssl;
server_name localhost;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
3. 配置成功,打开https
4. 相关端口跳转配置
- 配置 HTTP 和 HTTPS 共存
server {
listen 80 default backlog=2048;
listen 443 ssl;
server_name xxxx.com;
ssl_certificate ssl/server.pem;
ssl_certificate_key ssl/server.key;
location / {
root html;
index index.html index.htm index.php;
}
}
- HTTP 80端口自动跳转HTTPS 443端口
Nginx配置 rewrite 重写地址
location / {
root html;
index index.html index.htm;
rewrite ^ https://$http_host$request_uri? permanent;
}
5. 关于站点显示不安全
- 双击crt文件,安装到本地
再次连接显示:
参考资料 & 致谢
【1】Nginx下载官网
【2】openssl 、nginx生成配置自签名证书
【3】SSL–Windows下生成OpenSSL自签证书
【4】nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/
【5】nginx证书填写路径报错:library:fopen:Unknown error:fopen
【6】Nginx下配置SSL模块,支持https
【7】[/usr/local/openssl//.openssl/include/openssl/ssl.h] Error 127