openssl 生成证书步骤

openssl 生成证书步骤

码农世界 2024-05-15 前端 55 次浏览 0个评论

        本地测试RSA非对称加密功能时,需要用到签名证书。本文记录作者使用openssl本地生成证书的步骤,并没有深入研究openssl,难免会有错误,欢迎指出!!!

生成证书标准流程:

1、生成私钥(.key)

2、用私钥生成证书请求(.csr)

3、将证书请求文件(.csr)提交给证书颁发机构(CA),CA会对提交的证书请求中的所有信息生成一个摘要,然后使用CA根证书对应的私钥进行加密,这就是所谓的“签名”操作,完成签名后就会得到真正的签发证书(.cer或.crt)

一、openssl生成证书

1、生成一个 2048 位的 RSA 私钥

openssl genrsa -out private.key 2048

2、使用私钥来生成新的证书签名请求(.csr)

openssl req -new -key private.key -out private.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"
  • -new 表示创建一个新的证书请求;
  • -key 后面跟着的是私钥文件;
  • -out 后面是输出的CSR文件;
  • -subj 是请求中的主题信息。你将被要求提供一些信息,如你的国家、省份、城市、组织名称等。这些信息将包含在你的证书中。
      • /C= 是证书的国家代码。
      • /ST= 是州或省份名称。
      • /L= 是城市名称。
      • /O= 是组织名称。
      • /OU= 是组织单位名称。
      • /CN= 是通用名称,通常是域名。
      • /emailAddress= 是电子邮件地址。

      3、有了私钥和证书签名请求后,我们可以选择做3件事:

      3.1 标准CA签发流程

      • 将证书请求(.csr)提交给CA认证机构申请证书(.crt);
      • CA机构会用他的根证书对应的私钥来签名(由CA机构操作);

        3.2 生成自签名证书

                可以看到标准CA签发流程是用CA机构的私钥去签名。而自签名证书是用自己的私钥签署自己的证书请求,生成自签名SSL证书。

        注意:自签名证书不会被浏览器信任,只能用于内部或测试用途。如果你需要一个可被浏览器信任的证书,你需要从受信任的证书颁发机构(CA)获取签名证书。

        openssl x509 -req -in private.csr -out private.crt -signkey private.key -days 365
        • openssl x509 -req 表示签名请求,生成证书。
        • -in private.csr 表示输入的CSR文件名。
        • -out private.crt 表示输出的CRT文件名。
        • -signkey private.key 表示用于签名的私钥文件名。
        • -days 表示证书的有效期。

                  生成的证书格式默认是 PEM,即 Privacy Enhanced Mail,它是 Base64 编码的 ASCII 码文件,常用于存储证书和密钥。PEM 格式的证书通常以 -BEGIN CERTIFICATE- 开始,以 -END CERTIFICATE- 结束,如图:

          3.3 私有CA签发证书

                  如果我们把3.2生成自签名证书(ca.crt)和私钥(ca.key)当作私有的CA机构,然后签署其他的证书签名请求,生成私有CA签名的证书,这个过程,可以理解为是私有CA签发证书。

          CA签名证书命令:

          • ca.key就是3.2的private.key;
          • ca.crt就是3.2的private.crt;
          • server.csr就是我们需要签名的证书请求
            openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
            • -req 表示要处理的输入文件是一个证书签名请求(CSR)。
            • -in server.csr 表示要处理的CSR文件名为server.csr。
            • -CA ca.crt 表示CA的证书文件名为ca.crt。
            • -CAkey ca.key 表示CA的私钥文件名为ca.key。
            • -CAcreateserial 表示如果CA的证书和私钥不存在,则创建它们。
            • -out server.crt 表示生成的服务器证书输出文件名为server.crt。

              二、命令简化

              生成 私钥(.key) 和 证书签名请求(.csr) 可以用一条命令实现:

              openssl req -new -newkey rsa:2048 -nodes -keyout my.key -out my.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"

              生成 私钥(.key) 和 证书签名请求(.csr) 再生成 签名证书(.crt)可以用一条命令实现:

              openssl req -x509 -newkey rsa:2048 -nodes -keyout my.key -out my.crt -days 3650  -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"

              三、其他命令

              使用私钥生成对应的公钥:

              openssl rsa -in private.key -pubout -out public.pub

              从证书中提取公钥:

              openssl x509 -in private.crt -pubkey -outform PEM -out public_key.pem

转载请注明来自码农世界,本文标题:《openssl 生成证书步骤》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,55人围观)参与讨论

还没有评论,来说两句吧...

Top