如何利用OpenSSL生成证书

avatar
开发者 @网易

此文已由作者赵斌授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。

一、前言


最近为了测试内容分发网络(Content Delivery Network,简称 CDN)添加的新功能,支持HYTTPS安全加速功能,需要对证书的有效性进行验证,于是乎需要自己生成合法的、非法的、过期的证书。接下来介绍下如何通过OpenSSL生成证书。


二、使用OpenSSL生成证书


  1. 创建证书密钥文件


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 NameC 证书持有者所在国家要求填写国家代码,用2个字母表示
State or Province NameST 证书持有者所在州或省份填写全称,可省略不填
Locality NameL 证书持有者所在城市可省略不填
Organization NameO 证书持有者所属组织或公司可省略不填
Organizational Unit NameOU 证书持有者所属部门可省略不填
Common NameCN 证书持有者的通用名必填
Email Address证书持有者的通信邮箱可省略不填


三、生成过期证书的简便方法


1.首先将系统的时间修改超前2年;


2.执行(二)中第2步时,设置-days为证书的有效期,例如设置为365;


3.再次将系统时间恢复即可,该证书则为已过期一年。


四、查看证书


按照(二)或(三)中的方法生成的证书,点击ca.crt,在常规中即可看到该证书都有效期是从XXX到XXX。按照(二)中的方法即生成的为合法证书;按照(三)中的方法即生成的为过期证书;非法证书的生成即随便输入,不是按照证书的格式,不是如下格式:-----BEGIN CERTIFICATE-----xxx-----END CERTIFICATE-----即可。



免费体验云安全(易盾)内容安全、验证码等服务

11.1—11.15云计算基础服务全场5折起

更多网易技术、产品、运营经验分享请点击


相关文章:
【推荐】 为何要在网站上设置的验证码