关于SSL及证书体系的知识这里不再赘述,仅记录下在Windows下生成根证书并签发子证书的过程。 首先下载OpenSSL-win32( http://www.slproweb.com/products/Win32OpenSSL.html ) , 然后需要通过设置环境变量来指定一个配置文件openssl.cnf,但这个文件安装OpenSSL时没有默认提供,那怎么办? 其实安装Git、Wamp、node.js某些模块时,都会生成这个文件,装个Everything全局搜索一下,一般都能找到一个的.....
把这个文件拷贝到OpenSSL的安装目录,然后设置系统环境变量:OPENSSL_CONF=D:/OpenSSL/openssl.cnf ,然后在OpenSSL安装目录下的bin目录下打开命令行。
首先生成CA根证书私钥
下面的命令表示生成一个不加密的私钥: 1
openssl genrsa -out ca.key 2048
然后生成CA根证书公钥
1 | openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/C=CN/ST=HuNan/L=ChangSha/O=spirithy.com/OU=spirithy.com" |
这里/C表示国家(Country),只能是国家字母缩写,如CN、US等;/ST表示州或者省(State/Provice);/L表示城市或者地区(Locality);/O表示组织名(Organization Name);/OU其他显示内容,一般会显示在颁发者这栏。注意参数中的"-days"表示有效时间,这里是10年。
到这里根证书就已经创建完毕了,下面介绍建立网站SSL证书的步骤。
创建SSL证书私钥
下面的命令表示生成一个不加密的私钥: 1
openssl genrsa -out server.key 2048
然后生成SSL证书公钥
1 | openssl req -new -days 3650 -key server.key -out server.csr -subj "/C=CN/ST=HuNan/L=ChangSha/O=spirithy.com/OU=spirithy.com/CN=spirithy.com" |
这里需要注意的是,/O字段内容必须与刚才的CA根证书相同;/CN字段为公用名称(Common Name),必须为网站的域名(不带www);/OU字段最好也与为网站域名,当然选择其他名字也没关系。
使用CA根证书签署SSL证书
首先需要做准备工作:
- 在openssl应用程序目录下新建 "demoCA" 目录
- 在demoCA 目录下新建 "newcerts" 目录、index.txt文件 和 serial 文件
- 在serial文件中写入文本“01”
- 编辑openssl.cnf,将 CA_default 下的 dir 改为 demoCA目录的路径
然后开始签署: 1
openssl ca -days 3285 -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
Sign the certificate? [y/n]
这句,打入y并回车,然后出现1 out of 1 certificate requests certified, commit? [y/n]
,同样y回车。