前言
这篇文章主要是给另一篇文章提供生成个人CA证书步骤的教程。
生成CA证书
首先网上下载一个openssl软件,Windows可以从这里下载:已经编译好的Windows下的openssl,当然也可以在Linux下生成。
之后按步骤输入下面指令生成证书。这一步是创建根证书。
创建私钥
> openssl genrsa -out ca/ca-key.pem 1024
创建证书请求
> openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
Country Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:guangdong
Locality Name (eg, city) []:guangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:test
Organizational Unit Name (eg, section) []:test
Common Name (eg, YOUR name) []:root
Email Address []:test
依次输入cn
、guangdong
、guangzhou
、test
等信息。
自签署证书
>openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650
将证书导出成浏览器支持的.p12格式
>openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12
如果要输入其它信息直接全部为test。
生成server证书
这一步生成的证书是要放在服务器上。
创建私钥
>openssl genrsa -out server/server-key.pem 1024
创建证书请求
> openssl req -new -out server/server-req.csr -key server/server-key.pem
Country Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:guangdong
Locality Name (eg, city) []:guangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:test
Organizational Unit Name (eg, section) []:test
Common Name (eg, YOUR name) []:192.168.1.246 # 注释:一定要写服务器所在的ip地址
Email Address []:sky
自签署证书
> openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650
将证书导出成浏览器支持的.p12格式
> openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12
如果要输入其它信息直接全部为test。
生成client证书
创建私钥
> openssl genrsa -out client/client-key.pem 1024
创建证书请求
> openssl req -new -out client/client-req.csr -key client/client-key.pem
Country Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:guangdong
Locality Name (eg, city) []:hangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:skyvision
Organizational Unit Name (eg, section) []:test
Common Name (eg, YOUR name) []:sky
Email Address []:sky # 注释:就是登入中心的用户(本来用户名应该是Common Name,但是中山公安的不知道为什么使用的Email Address,其他版本没有测试)
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:test
An optional company name []:test
自签署证书
> openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650
将证书导出成浏览器支持的.p12格式
> openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12
如果要输入其它信息直接全部为test。
update 2018-03-05:
本人使用Python编写了一键创建以上证书的脚本,放在了github的gist:https://gist.github.com/AngelLiang/730edb0042b9ac50f692c905ca8f1310