kipway@outlook.com
2017.9.3(update 2017.11.19)
本文的内容在openssl的文档中都能找到,为了便于使用,特记录于此。以下使用openssl 1.0.2L长周期支持版,系统为ubuntu1404
采用默认方式就行了。
./config
make
make test
make install
成功后,会安装在/usr/local/ssl目录中。
在~/目录下建立一个ca目录,将openssl1.0.2L中apps/demoCA目录拷贝到~/ca目录,并在创建ca/demoCA/newcerts子目录,一切使用默认配置,以下的操作终端窗口命令行当前目录均在~/ca目录中。
制作自己的根证书,本例为cakipway:
# 创建根证书的RSA private key 文件
openssl genrsa -out cakipway.key 2048
# 创建根证书申请csr文件
openssl req -new -key cakipway.key -out cakipway.csr
# 创建自签名根证书
openssl x509 -req -days 3650 -in cakipway.csr -signkey cakipway.key -out cakipway.crt
# 转换证书格式pem->der,用于TLS协议中传输
openssl x509 -in cakipway.crt -outform der -out cakipway.cer
本例制作一个srv_h58服务器证书,使用上面的cakipway签发。
#创建服务器private key
openssl genrsa -out srv_h58.key 2048
#创建服务器证书申请
openssl req -new -key srv_h58.key -out srv_h58.csr
#使用cakipway.crt签发服务器证书
openssl ca -days 3650 -in srv_h58.csr -out srv_h58.crt -cert cakipway.crt -keyfile cakipway.key
# 转换证书格式pem->der,用于TLS协议中传输
openssl x509 -in srv_h58.crt -outform der -out srv_h58.cer
制作srv_h58.csr时会要求输入一些参数,如实填写就行了,注意Common Name要填写服务器的IP(局域网使用IP)或网站的域名:Common Name (e.g. server FQDN or YOUR name) []:192.168.1.58
https网站或者wss服务在服务端安装服务器证书srv_h58.cer 和private key srv_h58.key(注意保密)使用。
由于是我们自己签发的,默认条件下FireFox是不会认的。 打开选项->高级->证书->查看证书->证书机构->导入根证书cakipway.crt->确定。这样FireFox访问由cakipway签发的证书的https网站就是绿色安全标志了。
使用前面得方法建立的证书你会发现在chrome 58及以后版本不认(FireFox还认),因为chrome 58及以后只认带SAN扩展的证书。SAN(Subject Alternative Name)是SSL标准x509中 定义的一个扩展。使用了SAN字段的SSL证书,可以扩展此证书支持的域名,使得一个证书可以支持多个不同域名的解析。需要使用下面方法在正书中添加SAN扩展字段, 将/usr/local/ssl/openssl.cnf文件复制到~/ca目录,修改v3_req字段:
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = kipway.com
DNS.2 = *.kipway.com
DNS.3 = tomchina.cn
DNS.4 = *.tomchina.cn
IP.1 = 127.0.0.1
IP.2 = 125.82.165.226
其中alt_names的内容,比如DNS.1,DNS.2,IP1,IP2等为你需要签署的授权域名和IP。
在制作自签发根证书签发时需要带上-extensions v3_ca参数,如3中的对应部分改为:
# 创建自签名根证书
openssl x509 -req -days 3650 -in cakipway.csr -signkey cakipway.key -out cakipway.crt -extensions v3_ca
在创建服务器证书申请时带上配置和扩展参数,如4中对应部分改为下:
#创建服务器证书申请
openssl req -new -key srv_h58.key -out srv_h58.csr -config openssl.cnf
#使用cakipway.crt签发服务器证书
openssl ca -days 3650 -in srv_h58.csr -out srv_h58.crt -cert cakipway.crt -keyfile cakipway.key -config openssl.cnf -extensions v3_req
制作好到SAN扩展的证书在chrome的证书管理中导入后,访问该网站就可以看到绿色小锁https标识了。