开发者社区> 问答> 正文

生成证书



在配置HTTPS监听时,您可以使用自签名的CA证书,并且使用该CA证书为客户端证书签名。


使用Open SSL生成CA证书


  1. 运行以下命令在/root目录下新建一个ca文件夹,并在ca文件夹下创建四个子文件夹。 $ sudo mkdir ca
  2. $ cd ca
  3. $ sudo mkdir newcerts private conf server
  • newcerts目录将用于存放CA签署过的数字证书。
  • private目录用于存放CA的私钥。
  • conf目录用于存放一些简化参数用的配置文件。
  • server目录存放服务器证书文件。

conf目录下新建一个包含如下信息的openssl.conf文件。
  1. [ ca ]
  2. default_ca = foo
  3. [ foo ]
  4. dir = /root/ca
  5. database = /root/ca/index.txt
  6. new_certs_dir = /root/ca/newcerts
  7. certificate = /root/ca/private/ca.crt
  8. serial = /root/ca/serial
  9. private_key = /root/ca/private/ca.key
  10. RANDFILE = /root/ca/private/.rand
  11. default_days = 365
  12. default_crl_days= 30
  13. default_md = md5
  14. unique_subject = no
  15. policy = policy_any
  16. [ policy_any ]
  17. countryName = match
  18. stateOrProvinceName = match
  19. organizationName = match
  20. organizationalUnitName = match
  21. localityName = optional
  22. commonName      = supplied
  23. emailAddress    = optional

运行以下命令生成私钥key文件。
  1. $ cd /root/ca
  2. $ sudo openssl genrsa -out private/ca.key

运行结果如下图所示。

运行以下命令并按提示输入所需信息,然后按下回车键生成证书请求csr文件。
$ sudo openssl req -new -key private/ca.key -out private/ca.csr

注意:Common Name需要输入负载均衡的域名。


运行以下命令生成凭证crt文件。
$ sudo openssl x509 -req -days 365 -in private/ca.csr -signkey private/ca.key -out private/ca.crt
运行以下命令为CA的key设置起始序列号,可以是任意四个字符。
$ sudo echo FACE > serial
运行以下命令创建CA键库。
$ sudo touch index.txt
运行以下命令为移除客户端证书创建一个证书撤销列表。
$ sudo openssl ca -gencrl -out /root/ca/private/ca.crl -crldays 7 -config "/root/ca/conf/openssl.conf"
输出为:
Using configuration from /root/ca/conf/openssl.conf

为客户端证书签名


  1. 运行以下命令在ca目录内创建一个存放客户端key的目录users
    $ sudo mkdir users

  2. 运行以下命令为客户端创建一个key。
    $ sudo openssl genrsa -des3 -out /root/ca/users/client.key 1024

    注意:创建key时要求输入pass phrase,这个是当前key的口令,以防止本密钥泄漏后被人盗用。两次输入同一个密码。

  3. 运行以下命令为客户端key创建一个证书签名请求csr文件。
    $ sudo openssl req -new -key /root/ca/users/client.key -out /root/ca/users/client.csr
    输入该命令后,根据提示输入上一步输入的pass phrase,然后根据提示输入对应的信息。

    注意: A challenge password是客户端证书口令。注意将它和client.key的口令进行区分。

  4. 运行以下命令使用CA证书的key为客户端key签名。
    $ sudo openssl ca -in /root/ca/users/client.csr -cert/root/ca/private/ca.crt -keyfile /root/ca/private/ca.key -out/root/ca/users/client.crt -config "/root/ca/conf/openssl.conf"
    当出现确认是否签名的提示时,两次都输入y

  5. 运行以下命令将证书转换为PKCS12文件。
    $ sudo openssl pkcs12 -export -clcerts -in/root/ca/users/client.crt -inkey /root/ca/users/client.key -out/root/ca/users/client.p12
    按照提示输入客户端client.key的pass phrase。再输入用于导出证书的密码。这个是客户端证书的保护密码,在安装客户端证书时需要输入这个密码。

  6. 运行以下命令查看生成的客户端证书。 cd users
  7. ls

展开
收起
行者武松 2017-10-17 15:25:25 2791 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多