用 OpenSSL 创建 CA 根证书
//产生CA根证书私钥
//这个命令是产生 2048bit 长度的RSA秘钥文件,这个秘钥通过一个加密算法加密,在测试时输入的密码是abcd
openssl genrsa -des3 -out caStudy.key 2048
//生成CA根证书
//在这个命令中首先要输入上面产生秘钥时输入的密码,然后分别输入国家公司等信息
//在填写 Common Name 时,是要填写域名,最好填一个有效的域名
openssl req -new -x509 -days 365 -key caStudy.key -out caStudy.crt
//通过以上两条命令就产生了CA根证书,这时候如果用命令
openssl verify caStudy.crt
//对证书进行校验会报错:
//error 18 at 0 depth lookup: self signed certificate
//error caStudy.crt: verification failed
//原因是 OpenSSL 框架没有信任这个证书,需要将这个证书安装到 OpenSSL 框架中
//问题的解释在 http://gagravarr.org/writing/openssl-certs/errors.shtml 此网站中有讲
//安装此证书为OpenSSL信任证书的方式:
//首先将证书转换为 pem 格式
openssl x509 -in caStudy.crt -inform der -outform pem -out caStudy.pem
//在此例中调用指令后显示
3072984832:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:crypto/asn1/tasn_dec.c:1112:
3072984832:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:crypto/asn1/tasn_dec.c:274:Type=X509
//这表示证书本来就是 pem 格式的了,只要更改扩展名就行了
cp caStudy.crt caStudy.pem
//查找openssl安装的目录
openssl version -d
//将生成的 .pem 格式的证书拷贝到此目录下的 certs 目录中
cp …
//计算此证书的哈希值
openssl x509 -noout -hash -in caStudy.pem
//建立软链接
ln -s caStudy.pem b47007ce.0
//将pem格式的证书建立软链接到生成的哈希值.0的文件,这里面的b47007ce是上一步计算哈希值得到的结果
//这时再调用
openssl verify caStudy.crt
//显示 caStudy.crt: OK
//表示证书验证通过
注意:如果这个证书不是自己生成的,而是从别的什么机构获取的,在安装之前务必验证证书的指纹信息
计算证书指纹信息的命令为:
openssl x509 -noout -fingerprint -in caStudy.pem
通过这个指令会计算一个SHA1值的指纹信息