• openssl生成CA和服务器SSL证书


    本文链接:https://www.cnblogs.com/obarong/p/13260489.html

    名词解释:

    • CA(Certificate Authority):证书颁发机构
    • SSL(Secure Sockets Layer): 安全套接字协议
    • HTTPS(Hypertext Transfer Protocol Secure):安全超文本传输协议,应用了SSL。
    • key:私钥
    • openssl:SSL工具
    • RSA:一种加密算法
    • x509:证书格式标准,这种证书只有公钥,不包含私钥。

    编码方式:

    • pem:后缀的证书都是base64编码
    • der:后缀的证书都是二进制格式

    证书:

    • csr:证书签名请求,后缀的文件是用于向ca申请签名的请求文件。
    • crt和cer:后缀的文件都是证书文件(编码方式不一定,有可能是.pem,也有可能是.der)

    一、编译安装openssl

    参考:Windows编译安装openssl - 奥巴荣 - 博客园
    https://www.cnblogs.com/obarong/p/13260321.html

    二、创建根CA(完成一次)

    创建根密钥

    注意: 这是用于签署证书请求的密钥,持有此证书的任何人都可以代表您签署证书。因此,请将其保存在安全的地方!

    openssl genrsa -des3 -out rootCA.key 4096
    

    如果您想要一个非密码保护的密钥,只需删除-des3选项

    创建并自签名根证书

    openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
    

    在这里,我们使用根密钥创建了根证书,该根证书需要在所有必须信任我们的计算机中分发。

    三、创建一个证书(为每个服务器完成)

    对于需要来自我们CA的受信任证书的每个服务器/设备,都需要遵循此过程。

    创建证书密钥

    openssl genrsa -out mydomain.com.key 2048
    

    创建签名(csr)

    在证书签名请求中,您可以指定要生成的证书的详细信息。
    根密钥的所有者(在本例中是您之前创建的)将处理该请求以生成证书。

    重要提示: 请注意,在创建签名请求时,务必要指定提供服务IP地址或域名的Common Name,否则将无法验证证书。

    我将在这里描述两种生成方式

    方法A(交互式)

    如果以这种方式生成csr,openssl将询问您有关生成证书的问题,例如组织详细信息和Common Name(CN),即创建证书的网址,例如mydomain.com

    openssl req -new -key mydomain.com.key -out mydomain.com.csr
    

    方法B(一行代码)

    此方法产生的输出与方法A相同,但适用于自动化:)。

    openssl req -new -sha256 -key mydomain.com.key -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=mydomain.com" -out mydomain.com.csr
    

    如果您需要通过其他配置,则可以使用-config参数,例如,在这里我想为证书添加替代名称。

    openssl req -new -sha256 
        -key mydomain.com.key 
        -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=mydomain.com" 
        -reqexts SAN 
        -config <(cat /etc/ssl/openssl.cnf 
            <(printf "
    [SAN]
    subjectAltName=DNS:mydomain.com,DNS:www.mydomain.com")) 
        -out mydomain.com.csr
    

    验证csr的内容(可选)

    openssl req -in mydomain.com.csr -noout -text
    

    使用mydomain csr和密钥以及CA Root密钥生成证书

    openssl x509 -req -in mydomain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out mydomain.com.crt -days 500 -sha256
    

    验证证书的内容(可选)

    openssl x509 -in mydomain.com.crt -text -noout
    

    参考

    Self Signed Certificate with Custom Root CA · GitHub
    https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309

    [转]如何创建一个自签名的SSL证书(X509) - lihuang - 博客园
    https://www.cnblogs.com/lihuang/articles/4205540.html

    证书,私钥,公钥,pfx,keystore,pem,der 都是什么?_云守护的专栏-CSDN博客_pem证书是什么
    https://blog.csdn.net/earbao/article/details/82958518

    ssl_百度百科
    https://baike.baidu.com/item/SSL

    问题

    • Mac添加rootCA.crt到钥匙串-登录-证书。访问报错
    此服务器无法证实它就是 192.168.3.3 - 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接。
    

    但是可以继续前往。

    解:
    创建文件192.168.3.3-2.ext,添加内容

    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    extendedKeyUsage = serverAuth, clientAuth
    subjectAltName=@SubjectAlternativeName
    
    [ SubjectAlternativeName ]
    IP.1=192.168.3.1
    IP.2=192.168.3.3
    

    生成crt

    openssl x509 -req -in 192.168.3.3.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out 192.168.3.3-2.crt -days 500 -sha256 -extfile 192.168.3.3-2.ext
    

    参考 OpenSSL自签发自建CA签发SSL证书 - justdoit - 博客园
    https://www.cnblogs.com/will-space/p/11913744.html

    • crt转pem

    解:

    openssl x509 -in 192.168.3.3-2.crt -out 192.168.3.3-2.pem
    
    • 提示证书时间过长

    解:有效时间要小于39个月

    openssl x509 -req -in 192.168.3.3.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out 192.168.3.3-2.crt -days 500 -sha256 -extfile 192.168.3.3-2.ext
    

    参考 Mac版Chrome 错误提示NET::ERR_CERT_VALIDITY_TOO_LONG怎么解决? - 知乎
    https://www.zhihu.com/question/403851332

  • 相关阅读:
    结对-五子棋游戏-开发过程
    团队-象棋游戏-设计文档
    课后作业-阅读任务-阅读提问-4
    团队-及格成绩查询系统-项目总结
    11.29-构建之法:现代软件工程-阅读笔记
    软件工程课程总结
    团队-及格成绩查询系统-最终程序
    团队-象棋游戏-团队一阶段互评
    课后作业-阅读任务-阅读提问-3
    课后作业-阅读任务-阅读笔记-3
  • 原文地址:https://www.cnblogs.com/obarong/p/13260489.html
Copyright © 2020-2023  润新知