生成CA证书

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

使用Open SSL生成CA证书

登录到任意一台安装有OpenSSL工具的Linux机器。本文以Alibaba Cloud Linux 3为例,OpenSSL版本为1.1.1k。

  1. 执行以下命令,在/home目录下新建一个ca目录,并在ca目录下创建四个子目录。

    sudo mkdir /home/ca
    cd /home/ca
    sudo mkdir newcerts private conf server
    • newcerts目录用于存放CA签署过的数字证书。

    • private目录用于存放CA的私钥。

    • conf目录用于存放一些简化参数用的配置文件。

    • server目录存放服务器证书文件。

  1. conf目录下新建一个openssl.conf文件。

    vim /home/ca/conf/openssl.conf

    openssl.conf文件包含下列信息。

     [ ca ]
     default_ca = foo
     [ foo ] 
     dir = /home/ca
     database = /home/ca/index.txt
     new_certs_dir = /home/ca/newcerts
     certificate = /home/ca/private/ca.crt
     serial = /home/ca/serial
     private_key = /home/ca/private/ca.key
     RANDFILE = /home/ca/private/.rand
     default_days = 365
     default_crl_days= 30
     default_md = sha256
     unique_subject = no
     policy = policy_any
     [ policy_any ]
     countryName = match
     stateOrProvinceName = match
     organizationName = match
     organizationalUnitName = match
     localityName = optional
     commonName = supplied
     emailAddress = optional
  2. 执行以下命令,生成私钥Key文件。

    cd /home/ca
    sudo openssl genrsa -out /home/ca/private/ca.key

    执行结果如下图所示。image

  3. 执行以下命令,按照提示输入所需信息,然后按下回车键生成证书请求csr文件。

    sudo openssl req -new -key /home/ca/private/ca.key -out /home/ca/private/ca.csr 

    image

    说明

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

  4. 执行以下命令,生成凭证crt文件。

    sudo openssl x509 -req -days 365 -in /home/ca/private/ca.csr -signkey /home/ca/private/ca.key -out /home/ca/private/ca.crt
    重要

    ca.crt文件为用于上传到CLBCA证书。

  5. 执行以下命令,为CAKey设置起始序列号,起始序列号可以是四个字符。本示例中设置为FACE。

    echo FACE | sudo tee /home/ca/serial
  6. 执行以下命令,创建CA键库。

    sudo touch /home/ca/index.txt
  7. 执行以下命令,为移除客户端证书创建一个证书撤销列表。

    sudo openssl ca -gencrl -out /home/ca/private/ca.crl -crldays 7 -config "/home/ca/conf/openssl.conf"

    输出为:

    Using configuration from /home/ca/conf/openssl.conf

为客户端证书签名

  1. 执行以下命令,在ca目录内创建一个存放客户端Key的目录users

    sudo mkdir /home/ca/users
  2. 执行以下命令,为客户端创建一个Key。

    sudo openssl genrsa -des3 -out /home/ca/users/client.key 2048
    说明

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

  3. 执行以下命令,为客户端Key创建一个证书签名请求csr文件。

    sudo openssl req -new -key /home/ca/users/client.key -out /home/ca/users/client.csr

    输入该命令后,根据提示输入STEP 2中输入的pass phrase,然后根据提示输入对应的信息。

    说明

    A challenge password是客户端证书口令,注意区分它和client.key。

  4. 执行以下命令,使用CA证书的Key为客户端Key签名。

    sudo openssl ca -in /home/ca/users/client.csr -cert /home/ca/private/ca.crt -keyfile /home/ca/private/ca.key -out /home/ca/users/client.crt -config "/home/ca/conf/openssl.conf"

    当出现确认是否签名的提示时,两次都输入y

    image

  5. 执行以下命令,转换证书为PKCS12文件。

    sudo openssl pkcs12 -export -clcerts -in /home/ca/users/client.crt -inkey /home/ca/users/client.key -out /home/ca/users/client.p12

    按照提示输入客户端client.keypass phrase。再输入用于导出证书的密码。这个是客户端证书的保护密码,在安装客户端证书时需要输入这个密码。

  6. 执行以下命令,查看生成的客户端证书。

     cd /home/ca/users
     ls