在Linux配置NGINX的证书

1、检查 Nginx 是否支持 SSL 模块


首先,检查当前安装的 Nginx 是否支持 SSL 模块。运行以下命令:
nginx -V 2>&1 | grep -o with-http_ssl_module

如果输出为空,说明 Nginx 没有编译 SSL 模块。


2. 重新编译 Nginx 以启用 SSL 模块


如果你没有安装源代码,可以从 Nginx 官方网站下载源代码包并重新编译。
下载 Nginx 源代码
cd /usr/local/src
wget http://nginx.org/download/nginx-1.21.3.tar.gz
tar -zxvf nginx-1.21.3.tar.gz
cd nginx-1.21.3
安装依赖
确保安装了必要的依赖项,包括 OpenSSL 和开发工具:
sudo yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
配置并编译 Nginx
./configure --with-http_ssl_module --prefix=/usr/local/nginx
make
sudo make install

3、秘钥证书文件放置路径:


sudo mkdir -p /etc/nginx/ssl
sudo cp star_baidu_com.crt /etc/nginx/ssl/
sudo cp star_baidu_com.key /etc/nginx/ssl/

4、修改  /usr/local/nginx/conf/nginx.conf

在 http 块中添加或修改以下内容:
http {
    # 其他配置...

#保留请求头里的字段下划线  因Nginx存在过滤下划线的问题      

underscores in headers on;   

server {
        listen 80;
        server_name www.baidu.com;

        # 重定向 HTTP 请求到 HTTPS
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;
        server_name www.baidu.com;

        ssl_certificate /etc/nginx/ssl/star_baidu_com.crt;
        ssl_certificate_key /etc/nginx/ssl/star_baidu_com.key;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        location / {

        # 需要修改IP地址
            proxy_pass http://172.16.222.1222:8089;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}


5、测试 Nginx 配置


在重新启动 Nginx 之前,先测试配置文件是否正确:
sudo /usr/local/nginx/sbin/nginx -t


6、重启 Nginx


如果配置文件没有问题,重启 Nginx 以应用更改:
sudo /usr/local/nginx/sbin/nginx -s reload


7、验证 SSL 配置


打开浏览器,访问 https://www.baidu.com,确保连接是安全的,并且没有 SSL 警告。


8、注意事项


    确保防火墙允许 443 端口的流量。
    使用 iptables
    查看现有规则(可选)
    sudo iptables -L -n -v
    添加规则以允许443端口的流量:
    允许入站TCP流量(假设你使用的是IPv4):
    sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    如果你还希望允许IPv6流量:
    sudo ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
    保存规则:
    对于基于Debian的系统(如Ubuntu),你可以使用iptables-save和iptables-restore:

    sudo sh -c "iptables-save > /etc/iptables/rules.v4"
    sudo sh -c "ip6tables-save > /etc/iptables/rules.v6"
    对于基于Red Hat的系统(如CentOS、Fedora),你可以使用service iptables save(这取决于你的系统配置):
    你需要确保 /etc/iptables/ 目录存在。如果目录不存在,你可以创建它:
    sudo mkdir -p /etc/iptables/
  一旦目录存在,你就可以再次尝试使用 iptables-save 命令来保存规则:
    sudo iptables-save > /etc/iptables/rules.v4
    sudo iptables-save > /etc/iptables/rules.v6
    

如果使用 Let's Encrypt 证书,建议使用 Certbot 工具自动管理证书的获取和续期。
 

增加新的域名可以增加

    server {
        listen 444 ssl;
        server_name www.kexue.com;

        ssl_certificate /etc/nginx/ssl/star_baidu_com.crt;
        ssl_certificate_key /etc/nginx/ssl/star_baidu_com.key;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        location / {

        # 需要修改IP地址 
            proxy_pass http://172.16.222.1222:8001;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
————————————————

 这里相应的开放444 端口

Linux查看 NginxSSL/TLS 证书信息,可以使用以下命令: ### **1. 查看 Nginx 配置文件中的证书路径** ```bash grep -E 'ssl_certificate|ssl_certificate_key' /etc/nginx/nginx.conf /etc/nginx/conf.d/*.conf ``` - 这会列出所有 Nginx 配置中指定的 `ssl_certificate`(证书文件)和 `ssl_certificate_key`(私钥文件)路径。 --- ### **2. 查看证书内容(PEM 格式)** ```bash openssl x509 -in /path/to/your/certificate.crt -noout -text ``` - **示例**(如果证书路径是 `/etc/nginx/ssl/example.com.crt`): ```bash openssl x509 -in /etc/nginx/ssl/example.com.crt -noout -text ``` - **输出信息**: - 证书颁发者(Issuer) - 有效期(Not Before / Not After) - 域名(Subject Alternative Name, SAN) - 公钥算法(Public Key Algorithm) --- ### **3. 检查证书是否匹配私钥** ```bash openssl x509 -noout -modulus -in /path/to/certificate.crt | openssl md5 openssl rsa -noout -modulus -in /path/to/private.key | openssl md5 ``` - 如果两个命令输出的 **MD5 哈希值相同**,说明证书和私钥匹配。 --- ### **4. 检查证书有效期** ```bash openssl x509 -enddate -noout -in /path/to/certificate.crt ``` - 输出示例: ``` notAfter=Dec 31 23:59:59 2023 GMT ``` --- ### **5. 检查 Nginx 是否加载了正确的证书(不重启 Nginx)** ```bash sudo nginx -t # 测试配置是否正确 sudo nginx -s reload # 重新加载配置(不影响在线服务) ``` --- ### **6. 检查远程服务器的证书(适用于调试)** ```bash openssl s_client -connect example.com:443 -servername example.com | openssl x509 -noout -text ``` - 这会显示远程服务器 `example.com` 的证书详细信息。 --- ### **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

慧香一格

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

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

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

打赏作者

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

抵扣说明:

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

余额充值