血泪!给Nginx配置https

本文介绍了一种使用自签名SSL证书为内网服务器配置HTTPS的方法,并提供了生成证书的Shell脚本及Nginx配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个坑,埋点土,数个一二三四五。种十块,翻一倍,其实这事挺惭愧。


其实总体来说这并不难,但就是像穿针引线,差一点点那就会前功尽弃。   多的不说了,想必都查过其他的资料。什么依赖关系啊,OpenSSL必装神马的就不赘述了。    就直接说两点吧,生成证书和nginx.conf的配置。


这里感谢廖雪峰老师(叩谢)   廖老师写了一个脚本来一次性生成证书。 其实脚本不长,流程也就是标准的生成证书的流程。但是自己生成如果不熟练弄错一点那就全拜拜(只能说明我笨,没别的)。 这个脚本只需要输入要配置ssl加密的域名以及输入四遍密码就可以了。  


像我弄得是个内网服务器,192.168.XX.XX这种。为此头疼了好久,实在是没找到怎么给这种域名搞证书的文章。(再次证明我太蠢了哈哈)。   亲测这个脚本是可以给内网生成证书的。其实自己手动生成也可以,但是还是脚本跑的精确度高。


#!/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 "}"

这个脚本跑完以后,把生成的四个文件拷贝到XX/XX/nginx/ssl/下面去,ssl目录没有的话就自己建立一个。


接下来是我弄得nginx.conf配置。大家可以参考一下\

server
        {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name     192.168.1.41;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/default;
        ssl on;
        ssl_certificate /usr/local/nginx/ssl/192.168.1.41.crt;
        ssl_certificate_key /usr/local/nginx/ssl/192.168.1.41.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /usr/local/nginx/ssl/192.168.1.41.pem 2048
        #ssl_dhparam /usr/local/nginx/ssl/192.18.1.41.pem;

        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

弄好之后到nginx的sbin目录下试一试   ./nginx -t   这个命令看看配置文件是不是正确。如果正确会显示

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful


出现这两条以后我就基本安了90%的心了。   接着重新载入一下nginx。

[root@localhost sbin]# ./nginx -s reload


当当!!!



Nginx配置HTTPSSSL证书涉及多个步骤,包括安装必要的依赖、获取并放置SSL证书文件、编辑Nginx配置文件以启用SSL支持等。以下是详细的指导: ### 安装Nginx及相关依赖 首先确保系统已经安装了Nginx以及与SSL相关的依赖包。这可以通过以下命令完成: ```bash yum install -y nginx gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel ``` ### 获取SSL证书 你需要从一个受信任的证书颁发机构(CA)获取SSL证书。通常你会得到一个包含公钥证书和可能的中间证书的文件,以及一个私钥文件。 ### 配置Nginx以使用SSL证书 接下来需要修改Nginx配置文件来指定SSL证书的位置和其他相关设置。下面是一个示例配置片段,展示了如何为特定域名配置SSL支持: ```nginx server { listen 443 ssl; server_name yourdomain.com; # 证书和私钥文件路径 ssl_certificate /path/to/your/fullchain.crt; # 包含证书和中间证书 ssl_certificate_key /path/to/your/private.key; # 私钥文件 # SSL设置 ssl_protocols TLSv1.2 TLSv1.3; # 使用安全的协议版本 ssl_ciphers HIGH:!aNULL:!MD5; # 安全的加密算法 ssl_prefer_server_ciphers on; # 使用服务器指定的加密算法 location / { # 你的其他配置 } } ``` ### 启动或重启Nginx服务 一旦配置文件被正确更新,就可以启动或者重启Nginx服务使更改生效: ```bash systemctl restart nginx ``` ### 检查配置是否正确 可以通过访问网站并通过浏览器检查是否存在有效的SSL证书来验证配置是否成功。此外,也可以通过命令行工具如`openssl`来测试连接。 ### Docker环境中配置Nginx SSL 如果你正在使用Docker环境运行Nginx,可以按照如下方式创建容器,并挂载本地目录到容器内部以便于管理配置文件和日志: ```bash docker run -d --privileged=true --name ssl-nginx -p 80:80 -p 443:443 \ -v /home/ssl-nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /home/ssl-nginx/logs:/var/log/nginx \ nanlist/nginx1.23.1:v1.0 ``` 查看容器的日志可以帮助诊断任何可能出现的问题: ```bash docker logs --tail=1000 ssl-nginx ``` 以上步骤涵盖了基本的Nginx HTTPSSSL证书配置流程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值