自生成ssl证书在nginx中使用

使用docker部署测试,项目(nginx-ssl)目录结构如下:

  1. 生成证书文件
    # 创建项目目录
    mkdir nginx-ssl
    cd nginx-ssl
    
    # 创建证书目录
    mkdir certs
    cd certs
    
    # 生成证书(-subj内容不用修改)
    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt -subj "/C=AU/ST=VIC/L=Melbourne/O=Ranch/OU=root/CN=root/emailAddress=sample@sample.com"
  2. 生成nginx配置文件
    # 生成目录
    mkdir conf.d
    
    
    cat << EOF > conf.d/default.conf
    server {
        # 直接在 listen 指令中指定 ssl,无需再用 ssl on;
        listen 443 ssl;
        server_name localhost;
    
        # 移除 ssl on; 这一行
        ssl_certificate /etc/nginx/certs/server.crt;
        ssl_certificate_key /etc/nginx/certs/server.key;
    
        ssl_session_timeout 5m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        # 注意:建议移除 SSLv3,因为它存在安全漏洞
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
    
        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }
    }
    EOF
  3. 生成html测试页面
    # 创建目录
    mkdir html
    
    # 生成测试文件
    echo "<h1>hello nginx-ssl!!!</h1>" > html/index.html
    
  4. 编辑Dockerfile文件
    # 生产Dockerfile文件
    cat << eof > Dockerfile
    FROM nginx:1.22
    
    copy html/index.html /usr/share/nginx/html/index.html
    
    copy certs/server.crt /etc/nginx/certs/server.crt
    copy certs/server.key /etc/nginx/certs/server.key
    
    copy conf.d/default.conf /etc/nginx/conf.d/default.conf
    
    EXPOSE 443
    << eof
    
  5. 运行程序测试
    # 编译生成docker镜像,在Dockerfile文件目录下执行
    docker build -t nginx-ssl .
    
    # 查看生成好的镜像
    docker images
    
    # 运行生成的镜像容器
    docker run -d -p 8443:443 nginx-ssl
    

本机浏览器访问:https://localhost:8443/index.html 

生成SSL证书并配置Nginx SSL证书的步骤如下: 1. 生成密钥对 使用openssl生成密钥对,命令如下: ```shell openssl genrsa -des3 -out server.key 2048 ``` 其中,server.key是生成的密钥文件名,2048是密钥长度,可以根据需要进行修改。 2. 生成证书请求文件 使用上一步生成的密钥文件生成证书请求文件,命令如下: ```shell openssl req -new -key server.key -out server.csr ``` 其中,server.key是上一步生成的密钥文件名,server.csr是生成证书请求文件名。 在执行该命令时,需要输入一些证书相关的信息,例如国家、省份、城市、公司、部门等信息。这些信息可以根据实际情况进行填写。 3. 生成证书文件 使用上一步生成证书请求文件生成证书文件,命令如下: ```shell openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt ``` 其中,server.csr是上一步生成证书请求文件名,server.key是上一步生成的密钥文件名,server.crt是生成证书文件名。 在执行该命令时,需要输入一些证书相关的信息,例如国家、省份、城市、公司、部门等信息。这些信息可以根据实际情况进行填写。 4. 配置Nginx SSL证书Nginx配置文件中添加SSL证书配置,例如: ```shell server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/server.crt; ssl_certificate_key /path/to/server.key; ... } ``` 其中,/path/to/server.crt和/path/to/server.key分别是上一步生成证书文件和密钥文件的路径。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值