此文已由作者赵斌授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
一、前言
最近为了测试内容分发网络(Content Delivery Network,简称 CDN)添加的新功能,支持HYTTPS安全加速功能,需要对证书的有效性进行验证,于是乎需要自己生成合法的、非法的、过期的证书。接下来介绍下如何通过OpenSSL生成证书。
二、使用OpenSSL生成证书
创建证书密钥文件
openssl genrsa -des3 -out ca.key 8192
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施! 去除key文件口令的命令:
openssl genrsa -out ca.key 8192
2.创建证书请求并自签署证书 :
openssl req -new -x509 -sha256 -days 365 -key ca.key -out ca.crt -subj "/C=CN/ST=Beijing/L=Beijing/O=Netease/OU=Netease Root CA"各选项(及参数)的意义如下: req 使用openssl的req子命令 -new 生成新的证书请求 -x509 生成自签名证书 -days 365 自签名证书的有效期365天(1年)【仅当使用了 -x509 选项后有效】 -key ca.key 私钥文件名指定为ca.key【若为运行前就已有的私钥文件且原名不是ca.key,则改名为ca.key;否则新生成的私钥文件命名为ca.key】 -out ca.crt 指定输出所生成自签名证书的信息到文件,且文件名为ca.crt【建议不要省略】 -subj arg 其中,arg是选项 -subj 的参数,其格式类似于:/type0=value0/type1=value1/type2=... 形式。每一个 /type=value 形式的单元,都对应了一个完整的DN字段。
DN字段名 | 缩写 说明 | 填写要求 |
---|---|---|
Country Name | C 证书持有者所在国家 | 要求填写国家代码,用2个字母表示 |
State or Province Name | ST 证书持有者所在州或省份 | 填写全称,可省略不填 |
Locality Name | L 证书持有者所在城市 | 可省略不填 |
Organization Name | O 证书持有者所属组织或公司 | 可省略不填 |
Organizational Unit Name | OU 证书持有者所属部门 | 可省略不填 |
Common Name | CN 证书持有者的通用名 | 必填 |
Email Address | 证书持有者的通信邮箱 | 可省略不填 |
三、生成过期证书的简便方法
1.首先将系统的时间修改超前2年;
2.执行(二)中第2步时,设置-days为证书的有效期,例如设置为365;
3.再次将系统时间恢复即可,该证书则为已过期一年。
四、查看证书
按照(二)或(三)中的方法生成的证书,点击ca.crt,在常规中即可看到该证书都有效期是从XXX到XXX。按照(二)中的方法即生成的为合法证书;按照(三)中的方法即生成的为过期证书;非法证书的生成即随便输入,不是按照证书的格式,不是如下格式:-----BEGIN CERTIFICATE-----xxx-----END CERTIFICATE-----即可。
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 从加班论客户端开发中的建模
【推荐】 Message Loop 原理及应用
【推荐】 实现自己的前端模板轻量级框架