内网Nginx的自签名HTTPS配置

生成证书文件

#如果没有需要安装OpenSSL
yum -y install openssl openssl-devel

# 生成密钥,采用的是des3算法
openssl genrsa -des3 -out server.key 2048
# 根据密钥签发申请文件CSR
openssl req -new -key server.key -out server.csr
#这一步主要是去除密钥的密码,便于后续部署
openssl rsa -in server.key -out server.key 
#生成自签名根证书并设置证书的有效期,crt是发给客户端的证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key  -out server.crt
#有的需要pem的证书,对证书做的转换
openssl x509 -in server.crt -out server.pem -outform PEM 

参数说明:

req:  配置参数-x509指定使用 X.509证书签名请求管理(certificate signing request (CSR))."X.509" 是一个公钥代表that SSL and TLS adheres to for its key and certificate management.
-nodes:  告诉OpenSSL生产证书时忽略密码环节.(因为我们需要Nginx自动读取这个文件,而不是以用户交互的形式)。
-days 36500:  证书有效期,100年
-newkey rsa:  2048: 同时产生一个新证书和一个新的SSL key(加密强度为RSA 2048)
-keyout:  SSL输出文件名
-out:  证书生成文件名

修改nginx配置

server {
    listen 8080 ssl; #端口增加SSL支持
    server_name _;
    charset utf-8;
    # ssl on;
    ssl_certificate /usr/local/nginx/cert/server.crt;# 证书文件
    ssl_certificate_key /usr/local/nginx/cert/server.key; #私钥文件

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    # access_log ./logs/access_stream.log main;
    # error_log ./logs/error_stream.log;

     location / {
           root   html;
           index  index.html index.htm;
           try_files $uri $uri/ /index.html; # 防止Vue路由模式为history模式时刷新页面丢失
     }
 
    error_page 500 502 503 504  /50x.html;
    location = /50x.html {
            root html;
    }
}

 启动报错:nginx未开启SSL模块

root@linx:/usr/local/nginx/sbin# ./nginx
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:36

查看版本信息

root@linx:/opt/nginx-1.24.0# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.24.0
built by gcc 4.9.2 (Linx 4.9.2-10-linx1)
configure arguments:

 需要重新编译nginx

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

 编译完成后只make 不 install 安装

停掉nginx

/usr/local/nginx/sbin/nginx -s stop

 复制新编译的nginx程序替换原有

cp ./objs/nginx /usr/local/nginx/sbin/

查看版本信息,增加ssl模块的版本信息

root@linx:~# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.24.0
built by gcc 4.9.2 (Linx 4.9.2-10-linx1)
built with OpenSSL 1.0.1t  3 May 2016
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

nginx的SSL性能调优

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

http转https

    server {
       listen       80;
       server_name  192.168.152.3;
       return 301 https://$server_name$request_uri;
    }

访问400

需要在地址前面加 https://

证书不可信,生成证书时候增加 ext.in

extendedKeyUsage = serverAuth, clientAuth
basicConstraints = CA:FALSE
keyUsage = nonRepudiation,digitalSignature,keyEncipherment
subjectAltName = @alt_names

[alt_names]
IP.1=172.1.0.1
DNS.1=www.test.com
openssl x509 -req -days 3650 -in server.csr -signkey server.key  -out server.crt -extfile ext.ini

然后重新使用Openssl重新生成证书,然后导出crt证书,在windows下加入到信任的根证书下面,再次访问浏览器,浏览器访问不会报错,上述配置说明该证书是IP或者域名所有的。

安装证书参考:JDK制作自签名证书,实现双向认证,解决谷歌浏览器证书无效问题,亲测有效_keytool生成自签名证书浏览器不信任怎么办-CSDN博客

其他参考:

内网nginx配置SSL_nginx 内网 ssl-CSDN博客

SpringBoot项目配置https访问单项认证谷歌有效证书_springboot写双向认证客户端认证-CSDN博客

 nginx配置https访问 生成ssl自签名证书,浏览器直接访问_nginx配置cer证书-CSDN博客

Nginx证书配置:cer文件和jks文件转nginx证书.crt和key文件-CSDN博客

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今晚哒老虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值