创建一个UCC/SAN证书

创建一个UCC/SAN证书 - 包含多个域名的证书

BALA
02/19/2016
创建一个UCC/SAN证书

当一台服务器上共享多个站点的时候,而你又不想创建多个证书,比如,在AWS上几个站点共用一个Elastic Load Balancer(ELB),而每个ELB只允许上传一个证书。按照如下步骤,使用OpenSSL创建一个UCC证书,和实现Self Signed证书用于测试和开发环境。按照如下的步骤生产的证书可以上传到ELB上使用。

  1. 新建一个文件夹(把所有的证书相关文件都建在这个目录下),并且假设你的主站点域名是www.example.com, 还有其他域名wwwexample.net, test.example.com, blog.example.com
  2. 创建如下OpenSSL的配置文件www_example_com-san_openssl.conf (如果在Ubuntu 14.04下,可以拷贝/etc/ssl/openssl.cnf 到当前目录,然后进行相应的修改)

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = Country Name (2letter code)
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name(eg, city)
organizationName = OrganizationName (eg, company)
organizationalUnitName = OrganizationalUnit Name (eg, section)
commonName = Common Name(e.g. server FQDN or YOUR name)
commonName_max = 64

  1. 生成一个密钥 RSA加密方式

$ openssl genrsa -out www_example_com.key 2048

  1. 生成一个CSR (如果让CA进行认证的时候,需要提供该文件)

$ openssl req -sha256 -new -key www_example_com.key -out www_example_com.csr -config www_example_com-san_openssl.conf

  1. 验证CSR是否正确

$ openssl req -in www_example_com.csr -noout -text 部分输出 X509v3 Subject Alternative Name: DNS:www.example.com, DNS:test.example.com, DNS:www.example.net, DNS:blog.example.com

  1. 创建Self Signed的证书

$ openssl x509 -req -days 3650 -in csr.pem -signkey www_example_com.key -out www_example_com.pem -extensions v3_req -extfile www_example_com-san_openssl.conf

  1. 验证你的自签名证书的正确性

$ openssl x509 -in www_example_com.pem -noout -text

AWS上传UCC证书可能需要用CLI,如果在Console里上传出现错误的话 aws iam upload-server-certificate --server-certificate-name my-server-cert --certificate-body file://my-certificate.pem --private-key file://my-private-key.pem