生成自签名证书
如果是在运营商处获得的证书,则不用这一步
点击查看代码
mkdir /etc/nginx/ssl
cat > /etc/nginx/ssl/nginx.cnf <<EOF
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_req
prompt = no[ req_distinguished_name ]
C = CN
ST = BeiJing(随便写个省份)
L = BeiJing (随便写个城市)
O = BlahBlah (随便写个公司)
OU = BlahBlah (随便写个区域)
CN = aaa.abc.com # 这里一定是自己即将配置的域名[ req_ext ]
subjectAltName = @alt_names[ v3_req ]
subjectAltName = @alt_names[ alt_names ]
IP.1 = xxx.xxx.xxx
DNS.1 = aaa.abc.com # 这里也是自己即将配置的域名
EOFcd /etc/nginx/ssl# 生成私钥
openssl genrsa -out server.key 2048# 使用OpenSSL配置文件生成自签名证书
openssl req -x509 -new -nodes -key server.key -sha256 -days 3650 -out server.crt -config nginx.cnf
配置nginx
点击查看代码
vim /etc/nginx/sites-enabled/default
server {listen 80;listen [::]:80;listen 443 ssl;listen [::]:443 ssl;#判断,跳转 将所有http服务都跳转到https上if ( $scheme = 'http' ) {return 302 https://aaa.abc.com/;}server_name aaa.abc.com;#证书 证书的位置 /etc/nginx/sslssl_certificate ssl/server.crt;ssl_certificate_key ssl/server.key;ssl_prefer_server_ciphers on;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";root /var/www/example.com;index index.html;location / {try_files $uri $uri/ =404;}
}
这样就开启了https
但是,咱们这里是自签名证书,在浏览器上访问的时候会被是不被信任或者不安全的链接,所以还需要在浏览器中安装证书
或者
安装证书
这里需要用到上面生成的 server.crt
证书
如果你的证书也是crt结尾的,那在windows中是可以直接双击安装的
可以通过图标查看是否可以直接双击
双击安装,点击 安装证书
下一步
将所有的证书都放入下列存储---->浏览---->受信任的根证书颁发机构---->确定---->下一步
为了保险,安装成受信任的根证书颁发机构后,再安装一遍,安装到受信任的发布者
完成
此时再重启浏览器,再访问刚刚的网址
就会发现,已经显示安全了
也可以通过浏览器导入
谷歌浏览器
找到设置中的隐私与安全
往下翻,找到管理证书
然后找到 受信任的根证书颁发机构,再导入证书
Microsoft Edge
找到隐私中的安全性部分的管理证书
然后会弹出同样的框,然后找到 受信任的根证书颁发机构,再导入证书就可以了
经测试,这种方法无法在火狐浏览器中导入,知道如何在获取浏览器中信任自签名证书的小伙伴可以评论区说以下