自学内容网 自学内容网

Nginx生成和配置SSL证书

1.生成SSL证书

1.1生成自签名证书(生成证书方式一)

# 生成私钥:server.key
[root@localhost ~]# openssl genrsa -out server.key 2048


# 生成证书请求文件:server.csr 
[root@localhost cert]# openssl req -new -key server.key -out server.csr 
Country Name (2 letter code) [XX]:cn  《==这里填国家
State or Province Name (full name) []:guangdong《==这里填省份
Locality Name (eg, city) [Default City]:shenzhen《==这里填城市
Organization Name (eg, company) [Default Company Ltd]:xxx公司《==这里填公司名称
Organizational Unit Name (eg, section) []:xxx部门《==这里填公司部门
Common Name (eg, your name or your server's hostname) []:www.example.com 《==这里网站域名或者IP

# 自签名方式-生成证书文件:server.crt
[root@localhost cert]# openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365000
Signature ok
subject=/C=cn/ST=guangdong/L=shenzhen/O=das/OU=ma/CN=www.das.com
Getting Private key

生成完毕后,实际有用的只有 server.key 和 server.crt文件
在这里插入图片描述

1.2.模拟CA机构方式生成证书(生成证书方式二)

在 OpenSSL 中生成证书时,-CAkey 选项用于指定 CA(证书颁发机构)的私钥文件。这个私钥文件用于签署生成的证书,从而证明证书是由该 CA 颁发的。

以下是一个使用 OpenSSL 生成证书并涉及 -CAkey 选项的示例流程:

生成 CA 的私钥和自签名证书(如果还没有):

 #生成 CA 的私钥
openssl genpkey -algorithm RSA -out ca.key -pkeyopt rsa_keygen_bits:2048
 
#生成 CA 的自签名证书
openssl req -new -x509 -key ca.key -out ca.crt -days 3650
这里,ca.key 是 CA 的私钥文件,ca.crt 是 CA 的自签名证书文件。

生成服务器私钥、证书:

#生成服务器或客户端的私钥
openssl genpkey -algorithm RSA -out server.key -pkeyopt rsa_keygen_bits:2048
 
#生成证书签名请求(CSR)
openssl req -new -key server.key -out server.csr
这里,server.key 是服务器或客户端的私钥文件,server.csr 是生成的 CSR 文件。

#使用 CA 的私钥和自签名证书签署 CSR:
#使用 CA 的私钥和自签名证书签署 CSR,生成最终证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650000
#这里,-CA ca.crt 指定 CA 的自签名证书,-CAkey ca.key 指定 CA 的私钥文件,-out server.crt 指定生成的最终证书文件,-days 3650000指定证书的有效期。

验证生成的证书(可选):

#验证证书
openssl x509 -in server.crt -text -noout
这个命令会显示证书的详细信息,包括颁发者、有效期、公钥等。

总结:

-CAkey 选项用于指定 CA 的私钥文件。
生成证书时,需要 CA 的私钥来签署 CSR,从而生成最终证书。
希望这个示例能帮助你理解如何在 OpenSSL 中使用 -CAkey 选项生成证书。

注:上文是使用自签名方式生成证书,你也可以先证书一个

2 修改nginx.conf配置


server {
    listen 80;
    server_name localhost;
   # 将所有http请求自动跳转至https
   return 302 https://$host$request_uri;
}

server {
    listen       443 ssl;
    server_name  localhost;

# ssl配置
ssl_certificate /上文生成的的证书目录路径/server.crt;      # 证书文件路径
    ssl_certificate_key /上文生成的的证书目录路径/server.key;        # 私钥文件路径
    ssl_session_timeout 5m;                                # ssl会话信息保留时间
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;                   # 仅启用安全的 TLS 版本
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;    # 指定强大的加密套件(用于对称和非对称加密算法)
    ssl_prefer_server_ciphers on;                          # 优先使用服务器端的加密套件


    client_max_body_size 100m;  # 客户端请求体的最大允许大小;
    
# ... 以下是你配置文件的其他配置
}

原文地址:https://blog.csdn.net/jianghuchuang/article/details/143604956

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!