• OpenSSL自签名证书


    生成

    1. 生成根证书的私钥(root_private_key.pem)

    首先,您需要为根证书生成一个私钥。这通常是一个RSA或EC私钥。

    • 注意 centos8 秘钥长度低于2048位会报错
    openssl genpkey -algorithm RSA -out root_private_key.pem -pkeyopt rsa_keygen_bits:4096
    

    2. 创建根证书的CSR和自签名证书(root_csr.pem)

    接下来,使用根证书的私钥生成一个证书签名请求(CSR),并自签名该CSR以生成根证书。
    其中CN=My Root CA 可以修改为你需要的根域名

    # 创建根证书的CSR  
    openssl req -new -key root_private_key.pem -out root_csr.pem -subj "/C=US/ST=California/L=San Francisco/O=My Root CA/CN=My Root CA"
    

    在下面的命令中,-extensions v3_ca 指示 OpenSSL 使用名为 v3_ca 的扩展配置。
    需要创建一个包含这些扩展的配置文件,并在其中定义 v3_ca 段落
    可以写在服务器证书配置的openssl.cnf文件中, 下面为了好区分所以分开写:

    vim v3_ca
    #添加下面文本
    [v3_ca]  
    basicConstraints = CA:TRUE  
    keyUsage = keyCertSign, cRLSign
    #保存后运行下面命令生成根证书
    # 自签名根证书的CSR以生成根证书  
    openssl x509 -req -days 3650 -in root_csr.pem -signkey root_private_key.pem -out root_certificate.pem -extensions v3_ca
    

    3. 生成服务器证书的私钥(server_private_key.pem)

    现在,需要为服务器证书生成一个单独的私钥。

    openssl genpkey -algorithm RSA -out server_private_key.pem -pkeyopt rsa_keygen_bits:2048
    

    4. 创建服务器证书的CSR(server_private_key.pem)

    使用服务器证书的私钥生成一个CSR。
    将CN=100.70.84.6修改为你自己的域名或IP
    如果这里填写的IP/域名和 你服务器访问的IP/域名不匹配,证书始终无效

    openssl req -new -key server_private_key.pem -out server_csr.pem -subj "/C=US/ST=California/L=San Francisco/O=My Company/CN=100.70.84.6"
    

    5. 使用根证书签发服务器证书(server_csr.pem)

    最后,使用根证书和根证书的私钥签发服务器证书的CSR,以生成最终的服务器证书。
    在下面的命令中,-extensions v3_req -extfile openssl.cnf 指示 OpenSSL 使用配置文件
    (如 openssl.cnf)中定义的 v3_req 段落来添加v3扩展。您需要在配置文件中定义这些扩展,例如:

    vim openssl.cnf
    #添加以下内容
    [v3_req]  
    keyUsage = digitalSignature, keyEncipherment  
    extendedKeyUsage = serverAuth  
    subjectAltName = @alt_names  
    #服务器使用的域名和服务器IP(可选)如果不需要就删除上面subjectAltName这一行
    [alt_names]  
    DNS.1 = feng.com  
    DNS.2 = www.feng.com
    DNS.2 = *.feng.com
    DNS.2 = 100.70.84.6
    IP.1 = 100.70.84.6
    #保存后生成服务器证书
    openssl x509 -req -in server_csr.pem -CA root_certificate.pem -CAkey root_private_key.pem -CAcreateserial -out server_certificate.pem -days 3650 -extensions v3_req -extfile openssl.cnf
    

    6. 验证证书

    最后,您可以验证生成的根证书和服务器证书。

    # 验证根证书  
    openssl x509 -in root_certificate.pem -text -noout  
      
    # 验证服务器证书  
    openssl x509 -in server_certificate.pem -text -noout
    
    

    请注意,这只是一个基本的示例,用于生成根证书和基于该根证书的服务器证书。
    在实际应用中,可能需要根据您的具体需求和环境进行更多的配置和调整。
    特别是,您需要确保您的私钥得到妥善保管,不要将其泄露给未经授权的人员。

    vim /nginx/conf/nginx.conf
    #在http标签中添加https模块
    
    server {
        listen       443 ssl;
        server_name  100.70.84.6 feng.com www.feng.com;
    
        ssl_certificate      /nginx/ssl/server_certificate.pem;
        ssl_certificate_key  /nginx/ssl/server_private_key.pem;
    
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
    
        ssl_protocols TLSv1.2 TLSv1.3;
        
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
    
        location / {
            #proxy_pass http://100.70.84.6:20157;
            root   html;
            index  index.html index.htm;
        }
    }
    
    

    https://blog.csdn.net/weixin_45500120/article/details/138272014

  • 相关阅读:
    GO面试一定要看看这些面试题
    2022多校第二场 K题 Link with Bracket Sequence I
    【golang学习笔记2.2】 Map、结构体和接口
    浅谈Deployment,StatefulSet和DaemonSet的区别
    Leo赠书活动-05期 【打造敏捷测试团队】文末送书5本
    webpack原理篇(五十八):实战开发一个简易的webpack
    中小企业如何选择进销存软件?
    少有人走的路阅读笔记
    java毕业设计项目源代码javaweb租车汽车租赁汽车出租管理系统
    Kubernetes控制平面组件:API Server
  • 原文地址:https://blog.csdn.net/qq_45742250/article/details/139233348