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

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

一、前言

最近为了测试内容分发网络(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 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-----即可。

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

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

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

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

如何利用OpenSSL生成证书的更多相关文章

  1. 【本地服务器】利用openssl生成证书

    (一)下载openssl软件,解压,进入bin目录 下载地址 (二)1.在当前bin目录,按住shift键右击,选择"在此处打开命令窗口" 2.打开cmd命令窗口之后,在窗口中输入 ...

  2. Widows下利用OpenSSL生成证书

    1.下载OpenSSL的windows版本 32位:openssl-1.0.2a-i386-win32.zip 64位:openssl-1.0.2a-x64_86-win64.zip 下载之后解压即可 ...

  3. 利用openssl管理证书及SSL编程第1部分: openssl证书管理

    利用openssl管理证书及SSL编程第1部分 参考:1) 利用openssl创建一个简单的CAhttp://www.cppblog.com/flyonok/archive/2010/10/30/13 ...

  4. Linux下使用openssl生成证书

    利用OpenSSL生成库和命令程序,在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件. 参考:http:// ...

  5. Golang(十一)TLS 相关知识(二)OpenSSL 生成证书

    0. 前言 接前一篇文章,上篇文章我们介绍了数字签名.数字证书等基本概念和原理 本篇我们尝试自己生成证书 参考文献:TLS完全指南(二):OpenSSL操作指南 1. OpenSSL 简介 OpenS ...

  6. CentOS6系统openssl生成证书和自签证书

    CentOS6系统openssl生成证书和自签证书的过程,记录一下,本文基于CentOS 6 64bit.$ yum install openssl openssl-devel 1,生成服务器端的私钥 ...

  7. 使用OpenSSL生成证书

    使用OpenSSL生成证书 下载安装openssl,进入/bin/下面,执行命令(把ssl目录下的openssl.cnf 拷贝到bin目录下)1.首先要生成服务器端的私钥(key文件):openssl ...

  8. 利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl

    利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl 首先mingw的环境搭建,务必遵循下文: http://blog.csdn.net/ubuntu64fan/ar ...

  9. [转帖] ./demoCA/newcerts: No such file or directory openssl 生成证书时问题的解决.

    接上面一篇blog 发现openssl 生成server.crt 时有问题. 找了一个网站处理了一下: http://blog.sina.com.cn/s/blog_49f8dc400100tznt. ...

随机推荐

  1. Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found 问题排查

    自定义的classLoader启动spring容器,遇到 Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not subtype ...

  2. Codeforces 571B Minimization:dp + 贪心【前后相消】

    题目链接:http://codeforces.com/problemset/problem/571/B 题意: 给你一个长度为n的数列a[i]. 现在你可以随意改变数字的位置,问你 ∑| a[i] - ...

  3. IIS部署网站(建站)

      双击IIS图标,运行IIS服务器: 如下图所示: 2 IIS打开后,选中网站,然后右键,在弹出的菜单中,选择新建,然后选择网站:如下图所hi: 3 在弹出的窗口中,直接点击下一步:如下图所示: 4 ...

  4. Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小内存VPS服务器上的配置优化

    对其用户和应用程序来讲,每一个VPS平台的运行和管理都与一台独立主机完全相同,因为每一个VPS均可独立进行重启并拥有自己的root访问权限.用户.IP地址.内存.过程.文件.应用程序.系统函数库以及配 ...

  5. error: reference to 'max' is ambiguous

    1.     自定义的变量名    与      库中的      重名了

  6. 机器学习 Generative Learning Algorithm (B)

    Naive Bayes 在GDA模型中,特征向量x是连续的实数向量,在这一讲里,我们将要讨论另外一种算法用来处理特征向量x是离散值的情况. 我们先考虑一个例子,用机器学习的方法建立一个垃圾邮件过滤器, ...

  7. CH5103 [NOIP2008]传纸条[线性DP]

    给定一个 N*M 的矩阵A,每个格子中有一个整数.现在需要找到两条从左上角 (1,1) 到右下角 (N,M) 的路径,路径上的每一步只能向右或向下走.路径经过的格子中的数会被取走.两条路径不能经过同一 ...

  8. bzoj 1441: Min 裴蜀定理

    题目: 给出\(n\)个数\((A_1, ... ,A_n)\)现求一组整数序列\((X_1, ... X_n)\)使得\(S=A_1*X_1+ ...+ A_n*X_n > 0\),且\(S\ ...

  9. 使用MDI窗体实现多窗口效果

    本文章已收录于:   C#MDI窗体实现多窗口效果   Visual C#是微软公司推出的下一代主流程序开发语言,他也是一种功能十分强大的程 序设计语言,正在受到越来越多的编程人员的喜欢.在Visua ...

  10. bzoj 2850 巧克力王国——KDtree

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2850 改一下估价即可.判断子树能否整个取或者是否整个不能取,时间好像就能行了? 因为有负数, ...