6,nginx 设置自签名证书以及设置网址http强制转https访问
自签名证书可以在自己的内网环境或者非对外环境使用,保证通信安装
1、生产证书
直接使用脚本生产:
中途会提示书如1次域名和4次密码,把一下文件保存为sh文件,赋予x权限后 直接执行,根据提示输入。
#!/bin/sh # create self-signed server certificate: read -p "Enter your domain [www.example.com]: " DOMAIN echo "Create server key..." openssl genrsa -des3 -out $DOMAIN.key 1024 echo "Create server certificate signing request..." SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN" openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr echo "Remove password..." mv $DOMAIN.key $DOMAIN.origin.key openssl rsa -in $DOMAIN.origin.key -out $DOMAIN.key echo "Sign SSL certificate..." openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt echo "TODO:" echo "Copy $DOMAIN.crt to /etc/nginx/ssl/$DOMAIN.crt" echo "Copy $DOMAIN.key to /etc/nginx/ssl/$DOMAIN.key" echo "Add configuration in nginx:" echo "server {" echo " ..." echo " listen 443 ssl;" echo " ssl_certificate /etc/nginx/ssl/$DOMAIN.crt;" echo " ssl_certificate_key /etc/nginx/ssl/$DOMAIN.key;" echo "}"
2、拷贝证书到nginx指定位置
上述脚本执行完成后会在当前目录生产4个文件,例如我的:
我们知晓crt和key证书,拷贝走存放到nginx安装目录下一个单独目录即可,没有强制要求,一会nginx配置文件写真实路径即可。
3、增加nginx ssl文件
server { listen 443; ssl on; server_name www.zhangbei.com; root /usr/local/nginx/html/; ssl_certificate /usr/local/nginx/conf/ssl/www.zhangbei.com.crt; ssl_certificate_key /usr/local/nginx/conf/ssl/www.zhangbei.com.key; }
配置完成后重新加载nginx配置文件
nginx -s reload
4、使用https加上你的域名访问即可
地址栏前面会提示危险,不用理会,只是不可信而已,但是我们已经实现了ssl加密访问
5、强制转换http访问为http
修改nginx默认配置文件
增加如下rewrite操作,并从新加载nginx配置文件,这样就实现了http访问自动调整到https访问,保证访问安全。