背景:公司服务器因为app上架等原因,要提供https访问。
服务端:nginx1.18.0 windowsserver
整体流程:生成相关证书文件=》配置nginx的https访问=》设置https转http=》云服务器安全组添加443端口
一.生成相关证书文件
相关工具:openssl,windows版本下载地址是Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions自己去看合适的版本。我的是win64,下载的是http://slproweb.com/download/Win64OpenSSL-3_0_2.msi
安装注意:
1.安装过程有一个选择,是把dll复制到windows目录下或者在安装的bin目录下,默认是第一个,我手动选择了第二个。
2.安装完成后有一个给组织捐款的选择,是多选框,不捐款取掉勾选即可。
生成相关文件:
1.生成test.key文件
cmd 然后cd到openssl安装目录下的bin目录,就可以使用openssl命令了。
命令:openssl genrsa -des3 -out test.key 1024
输入密码后,文件就生成在openssl安装目录下的bin目录里面了。文件名字就是your.key
2.生成csr文件
命令:openssl req -new -key test.key -out test.csr
依次输入:国家、省、城市、公司名字、团队名字、个人名字、邮箱、密码、公司名字
其中国家不能用中文,我输入的是CN。其他我都写的中文。密码我选择key文件密码一样的。
3.复制 test.key 并重命名为test.key.org
命令:openssl rsa -in test.key.org -out test.key
4.生成 crt 证书
命令:openssl x509 -req -days 3650 -in test.csr -signkey test.key -out test.crt
5.复制文件到服务器
我把test.key、test.key.org、test.csr、test.crt这4个文件复制到了nginx下面新建的ssl目录
二、三。配置nginx的https访问以及设置https转http
server {
listen 443 ssl;
server_name www.xxx.cn;//配置你的域名
ssl_certificate C:/softs/nginx-1.18.0/ssl/test.crt;
ssl_certificate_key C:/softs/nginx-1.18.0/ssl/test.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
# 转发到 http 服务器中
proxy_pass http://localhost;
}
}
备份nginx/conf/nginx.conf文件,在其底部也可能看到有注释掉的443端口那一段,本身就是配置https访问的例子。在其后面添加了上面这一段即可。保存后 nginx -s reload 重新加载了配置文件。一般没有错误。
注意:server_name写你的域名。证书及key的路径写你的实际路径。
location节点中proxy_pass http://localhost;就把https端口转发到了本机http(我的默认是80)了。
四。云服务器安全组添加443端口
之前是配置了无法访问(浏览器提示访问超时),但服务器访问https://127.0.0.1或者https://localhost是可以正常访问的。显然是有安全把我的请求挡住了。我的服务器是阿里云,我默认是没有打开443端口的。去添加了后,https://www.xxx.cn就可以正常访问了。
参考资料网址:
用 Nginx 实现 https 转 http_lvye1221的博客-CSDN博客_nginx将https转http
Windows下为nginx配置https证书服务 - 一夜枫声 - 博客园
后记:最近更新的都是中医调理实战记录。因为工作内容保密原因,很多技术的内容不能写。等产品上架,获得公司许可后,再一一解密。:) 土豆