Nginx 自签证书实现80转443

一、服务器规划

OSserver备注
CentOS7.8(10.20.10.62)nginx_1.13.7
openssl_1.0.2
gcc_4.8.5
80 —>443
80<—>443

资源包下载:

nginx

openssl

gcc

二、执行步骤

2.1 自签证书

1、服务安装

相关资源的具体安装步骤我之前的博文有过介绍,可参考《Nginx七层负载均衡规划及部署》。重点不在于安装,在于如何实现 http 转 https,或两者之间均可访问。

2、生成 rsa 私钥

输入用户名、密码、邮箱等(可自定义,但需注意格式)

openssl genrsa -des3 -out server.key 1024

3、生成 csr 证书签名申请文件

openssl req -new -key server.key -out server.csr

4、输出无加密的私钥

这里之所以输出无加密的私钥,是为了避免每次 reload 时都需要输入密码,很麻烦。

openssl rsa -in server.key -out server_test.key

5、生成 crt 证书

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

# 证书有效期10年,可自定义

2.2 Nginx 配置

1、直接 443

server {
    listen 443 ssl;
    server_name  10.20.10.62;    # IP或域名
    ssl_certificate  /usr/local/nginx/key/server.crt;           # 证书路径
    ssl_certificate_key /usr/local/nginx/key/server_test.key;   # 私钥路径
    ssl_session_timeout 5m;
    ssl_protocols SSLv2 SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers on;
    client_max_body_size 50M;
    client_body_buffer_size 2M;

    location / {
        root   /data/web/ssl_test/;
        index  index.html index.htm;
        try_files $uri $uri/ @router;
    }
}

2、80 转 443

server {
    listen 443 ssl;
    server_name  10.20.10.62;    # IP或域名
    ssl_certificate  /usr/local/nginx/key/server.crt;           # 证书路径
    ssl_certificate_key /usr/local/nginx/key/server_test.key;   # 私钥路径
    ssl_session_timeout 5m;
    ssl_protocols SSLv2 SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers on;
    client_max_body_size 50M;
    client_body_buffer_size 2M;

    location / {
        root   /data/web/ssl_test/;
        index  index.html index.htm;
        try_files $uri $uri/ @router;
    }
}

server {
    listen 80;
    server_name 10.20.10.62;
    rewrite ^(.*)$ https://$host$1 permanent;
}

注意:listen 443 这种写法支持新版本而不支持老版本的,所以我使用了listen 443 ssl

echo "80-->443" >> /data/web/ssl_test/index.html

3、80/443 均可访问

server {
    listen 80;
    listen 443 ssl;
    server_name  10.20.10.62;    # IP或域名
    ssl_certificate  /usr/local/nginx/key/server.crt;           # 证书路径
    ssl_certificate_key /usr/local/nginx/key/server_test.key;   # 私钥路径
    ssl_session_timeout 5m;
    ssl_protocols SSLv2 SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers on;
    client_max_body_size 50M;
    client_body_buffer_size 2M;

    location / {
        root   /data/web/ssl_test/;
        index  index.html index.htm;
        try_files $uri $uri/ @router;
    }
}

这种方法就是在一个 server 里面同时监听 80 和 443 两个端口。

echo "80<-->443" >> /data/web/ssl_test/index.html

三、验证

1、80 转 443

http://10.20.10.62/ (访问 http 时,跳转到 https)

在这里插入图片描述

2、80/443 均可访问

http://10.20.10.62/(正常访问 http)
https://10.20.10.62/(正常访问 https)

在这里插入图片描述
注意:

https 需 Nginx 添加http_ssl_module模块,关于 Nginx 如何添加模块,大家可参考我之前的博文《Nginx实现平滑升级》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云计算-Security

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

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

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

打赏作者

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

抵扣说明:

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

余额充值