生成CA证书
<p>在香港地域配置HTTPS监听的全链路加密功能时,您可以选择性的使用自签名的CA证书,并且使用该CA证书为客户端证书签名/全链路加密时的CA证书,该证书并非必须选项。</p>
<p>如果您的业务必须为ELB加载CA证书,请提交工单来完成该需求。</p>
<p><span style="font-size:16px"><strong>使用Open SSL生成CA证书</strong></span></p>
<p><strong>操作步骤</strong></p>
<ol>
<li>
<p>执行如下命令,在<code>/root</code>目录下新建一个<code>ca</code>文件夹,并在<code>ca</code>文件夹下创建四个子文件夹。</p>
<pre>
<code>mkdir ca
cd ca
mkdir newcerts private conf server</code></pre>
<p>这四个目录的作用如下:</p>
<ul>
<li>
<p><code>newcerts</code>目录将用于存放CA签署过的数字证书。</p>
</li>
<li>
<p><code>private</code>目录用于存放CA的私钥。</p>
</li>
<li>
<p><code>conf</code>目录用于存放一些简化参数用的配置文件。</p>
</li>
<li>
<p><code>server</code>目录存放服务器证书文件。</p>
</li>
</ul>
</li>
<li>在<code>conf</code>目录下新建一个包含如下信息的<code>openssl.conf</code>文件。
<pre>
<code>[ ca ]
default_ca = foo
[ foo ]
dir =/home/cert/ca
database = /home/cert/ca/index.txt
new_certs_dir = /home/cert/ca/newcerts
certificate = /home/cert/ca/private/ca.crt
serial = /home/cert/ca/serial
private_key =/home/cert/ca/private/ca.key
RANDFILE = /home/cert/ca/private/.rand
default_days = 365 //签发证书的有效期,以天为单位
default_crl_days= 30
//从当前CRL到下次CRL发布以天的单位的时间间隔,在生成CRL的时候,该选项和default_crl_hours参数必须有一个
default_md = sha256
//由于centos不支持md5加密,故设置为sha256,否则会出现unknown message digest algorithm错误
unique_subject = no
policy = policy_any
[ policy_any ]
commonName = supplied</code></pre>
</li>
<li>执行如下命令,生成私钥key文件。
<pre>
<code>cd /home/cert/ca
openssl genrsa -out private/ca.key</code></pre>
<p>执行结果</p>
<br />
<img src="https://obs-cn-shanghai.yun.pingan.com/pcp-portal/20202304100933-172ba0f59691.png" style="width:750px" /></li>
<li>执行如下命令,按照提示输入所需信息,然后按下回车键生成证书请求<code>csr</code>文件。
<pre>
<code>openssl req -new -key private/ca.key -out private/ca.csr</code></pre>
<p>说明: Common Name填本机域名(可以填127.0.0.1),其余选项都填写“.”。</p>
<br />
<img src="https://obs-cn-shanghai.yun.pingan.com/pcp-portal/20202304100934-174c49209fc9.png" style="width:750px" /></li>
<li>执行如下命令,生成凭证<code>crt</code>文件。
<pre>
<code>openssl x509 -req -days 365 -in private/ca.csr -signkey private/ca.key -out private/ca.crt</code></pre>
<br />
<img src="https://obs-cn-shanghai.yun.pingan.com/pcp-portal/20202304100934-11c9330096fd.png" style="width:750px" /></li>
<li>执行如下命令,为CA的key设置起始序列号,可以是任意四个字符。
<pre>
<code>echo FACE > serial</code></pre>
</li>
<li>执行如下命令,创建CA键库。
<pre>
<code>touch index.txt</code></pre>
</li>
<li>执行如下命令,为移除客户端证书创建一个证书撤销列表。
<pre>
<code>openssl ca -gencrl -out /home/cert/ca/private/ca.crl -crldays 7 -config "/home/cert/ca/conf/openssl.conf"</code></pre>
<p>执行结果</p>
<br />
<img src="https://obs-cn-shanghai.yun.pingan.com/pcp-portal/20202304100934-14249e2f9e96.png" style="width:750px" /></li>
</ol>
<p><strong><span style="font-size:16px">为客户端证书签名</span></strong></p>
<p><strong>操作步骤</strong></p>
<ol>
<li>运行以下命令在ca目录内创建一个存放服务端key的目录users。
<pre>
<code>mkdir users</code></pre>
</li>
<li>运行以下命令为服务端创建一个key。
<pre>
<code>openssl genrsa -des3 -out /home/cert/ca/users/server.key 1024</code></pre>
<p>说明: 创建key时要求输入pass phrase,为当前key的口令,以防止本密钥泄漏后被人盗用。</p>
</li>
<li>两次输入同一个密码,可以执行命令<code>openssl rsa -in server.key -out server.key</code>去除。<br />
<img src="https://obs-cn-shanghai.yun.pingan.com/pcp-portal/20202304100934-131c380a960e.png" style="width:750px" /><br />
<br />
<img src="https://obs-cn-shanghai.yun.pingan.com/pcp-portal/20202304100934-1aca7c669d31.png" style="width:750px" /></li>
<li>运行以下命令为客户端key创建一个证书签名请求csr文件。
<pre>
<code>openssl req -new -key /home/cert/ca/users/server.key -out /home/cert/ca/users/server.csr</code></pre>
说明:
<p>输入该命令后,根据提示输入上一步输入的pass phrase,然后根据提示输入对应的信息。</p>
<p>Common Name设置为监听器vip_vport,其余选项都设置为"."。例如,ELB的IP为100.101.1.30,https端口为443,则Common Name应该为100.101.1.30_4433。</p>
<br />
<img src="https://obs-cn-shanghai.yun.pingan.com/pcp-portal/20202304100934-1da2cf1e9d69.png" style="width:750px" /></li>
<li>运行以下命令使用CA证书的key为客户端key签名。
<pre>
<code>openssl ca -in /home/cert/ca/users/server.csr -cert /home/cert/ca/private/ca.crt -keyfile /home/cert/ca/private/ca.key -out /home/cert/ca/users/server.crt -config "/home/cert/ca/conf/openssl.conf"</code></pre>
<p>当出现确认是否签名的提示时,两次都输入<code>y</code>。</p>
<br />
<img src="https://obs-cn-shanghai.yun.pingan.com/pcp-portal/20202304100934-10b579f6967b.png" style="width:750px" /></li>
</ol>
提交成功!非常感谢您的反馈,我们会继续努力做到更好!