在测试环境下,用户可以用通过以下方式进行数字证书测试。在客户的运行环境中,请使用从CA认证中心申请的数字证书。Linux环境安装了openssl组件。

自认证证书生成过程

  1. 搭建CA环境。
--假设用户为omm已存在,搭建CA的路径为test
--以root用户身份登录Linux环境,切换到用户omm
mkdir test
cd /etc/pki/tls
--copy 配置文件openssl.cnf到test下
cp openssl.cnf ~/test
cd ~/test
--到test文件夹下,开始搭建CA环境
--创建文件夹demoCA./demoCA/newcerts./demoCA/private
mkdir ./demoCA ./demoCA/newcerts ./demoCA/private
chmod 700 ./demoCA/private
--创建serial文件,写入01
echo '01'>./demoCA/serial
--创建文件index.txt
touch ./demoCA/index.txt
--修改openssl.cnf配置文件中的参数
dir  = ./demoCA
default_md      = sha256
--至此CA环境搭建完成
  1. 生成根私钥。
--生成CA私钥
openssl genrsa -aes256 -out demoCA/private/cakey.pem 2048
Generating RSA private key, 2048 bit long modulus
.................+++
..................+++
e is 65537 (0x10001)
--设置根私钥的保护密码,假设为Test@123
Enter pass phrase for demoCA/private/cakey.pem:
--再次输入私钥密码 Test@123
Verifying - Enter pass phrase for demoCA/private/cakey.pem:
  1. 生成根证书请求文件。
--生成CA根证书申请文件careq.pem
openssl req -config openssl.cnf -new -key demoCA/private/cakey.pem -out demoCA/careq.pem
Enter pass phrase for demoCA/private/cakey.pem:
--输入根私钥密码 Test@123
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-------以下名称请牢记,生成服务端证书和客户端证书时填写的信息需要与此处的一致
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:shanxi
Locality Name (eg, city) []:xian
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Abc
Organizational Unit Name (eg, section) []:hello
--Common Name可以随意命名
Common Name (eg, YOUR name) []:world
--Email可以选择性填写
Email Address []:Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
  1. 生成自签发根证书。
--生成根证书时,需要修改openssl.cnf文件,设置basicConstraints=CA:TRUE
vi openssl.cnf
--生成CA自签发根证书
openssl ca -config openssl.cnf -out demoCA/cacert.pem -keyfile demoCA/private/cakey.pem -selfsign -infiles demoCA/careq.pem
Using configuration from openssl.cnf
Enter pass phrase for demoCA/private/cakey.pem:
--输入根私钥密码 Test@123
Check that the request matches the signature
Signature ok
Certificate Details:Serial Number: 1 (0x1)ValidityNot Before: Feb 28 02:17:11 2017 GMTNot After : Feb 28 02:17:11 2018 GMTSubject:countryName               = CNstateOrProvinceName       = shanxiorganizationName          = AbcorganizationalUnitName    = hellocommonName                = worldX509v3 extensions:X509v3 Basic Constraints: CA:FALSENetscape Comment: OpenSSL Generated CertificateX509v3 Subject Key Identifier: F9:91:50:B2:42:8C:A8:D3:41:B0:E4:42:CB:C2:BE:8D:B7:8C:17:1FX509v3 Authority Key Identifier: keyid:F9:91:50:B2:42:8C:A8:D3:41:B0:E4:42:CB:C2:BE:8D:B7:8C:17:1FCertificate is to be certified until Feb 28 02:17:11 2018 GMT (365 days)
Sign the certificate? [y/n]:y1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
--至此CA根证书自签发完成,根证书demoCA/cacert.pem。
  1. 生成服务端证书私钥。
--生成服务端私钥文件server.key
openssl genrsa -aes256 -out server.key 2048
Generating a 2048 bit RSA private key
.......++++++
..++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
--服务端私钥的保护密码,假设为Test@123
Verifying - Enter pass phrase for server.key:
--再次确认服务端私钥的保护密码,即为Test@123
  1. 生成服务端证书请求文件。
--生成服务端证书请求文件server.req
openssl req -config openssl.cnf -new -key server.key -out server.req
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-------以下填写的信息与创建CA时的信息一致
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:shanxi
Locality Name (eg, city) []:xian
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Abc
Organizational Unit Name (eg, section) []:hello
--Common Name可以随意命名
Common Name (eg, YOUR name) []:world
Email Address []:
--以下信息可以选择性填写
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
  1. 生成服务端证书请求文件。
--生成服务端/客户端证书时,修改openssl.cnf文件,设置basicConstraints=CA:FALSE
vi openssl.cnf
--修改demoCA/index.txt.attr中属性为no。
vi demoCA/index.txt.attr--对生成的服务端证书请求文件进行签发,签发后将生成正式的服务端证书server.crt
openssl ca  -config openssl.cnf -in server.req -out server.crt -days 3650 -md sha256
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:Serial Number: 2 (0x2)ValidityNot Before: Feb 27 10:11:12 2017 GMTNot After : Feb 25 10:11:12 2027 GMTSubject:countryName               = CNstateOrProvinceName       = shanxiorganizationName          = AbcorganizationalUnitName    = hellocommonName                = worldX509v3 extensions:X509v3 Basic Constraints: CA:FALSENetscape Comment: OpenSSL Generated CertificateX509v3 Subject Key Identifier: EB:D9:EE:C0:D2:14:48:AD:EB:BB:AD:B6:29:2C:6C:72:96:5C:38:35X509v3 Authority Key Identifier: keyid:84:F6:A1:65:16:1F:28:8A:B7:0D:CB:7E:19:76:2A:8B:F5:2B:5C:6ACertificate is to be certified until Feb 25 10:11:12 2027 GMT (3650 days)
--选择y对证书进行签发
Sign the certificate? [y/n]:y--选择y,证书签发结束
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

去掉私钥密码保护,方法如下:

--去掉服务端私钥的密码保护
openssl rsa -in server.key -out server.key
--如果不去掉服务端私钥的密码保护需要使用gs_guc工具对存储密码进行加密保护
gs_guc encrypt -M server -D ./
--根据提示输入服务端私钥的密码,加密后会生成server.key.cipher,server.key.rand两个私钥密码保护文件
  1. 客户端证书,私钥的生成。
    生成客户端证书和客户端私钥的方法和要求与服务端相同。
--生成客户端私钥
openssl genrsa -aes256 -out client.key 2048
--生成客户端证书请求文件
openssl req -config openssl.cnf -new -key client.key -out client.req
--对生成的客户端证书请求文件进行签发,签发后将生成正式的客户端证书client.crt
openssl ca -config openssl.cnf -in client.req -out client.crt -days 3650 -md sha256

去掉私钥密码保护,方法如下:

--去掉客户端私钥的密码保护
openssl rsa -in client.key -out client.key
--如果不去掉客户端私钥的密码保护需要使用gs_guc工具对存储密码进行加密保护
gs_guc encrypt -M client -D ./
--根据提示输入客户端私钥的密码,加密后会生成client.key.cipher,client.key.rand两个私钥密码保护文件。

将客户端密钥转化为DER格式,方法如下:

openssl pkcs8 -topk8 -outform DER -in client.key -out client.key.pk8 -nocrypt
  1. 吊销证书列表的生成。
    如果需要吊销列表,可按照如下方法生成:
--首先创建crlnumber文件
echo '00'>./demoCA/crlnumber
--吊销服务端证书
openssl ca -config openssl.cnf -revoke server.crt
--生成证书吊销列表sslcrl-file.crl
openssl ca -config openssl.cnf -gencrl -out sslcrl-file.crl

一文教你生成SSL自认证证书相关推荐

  1. Shell脚本实现生成SSL自签署证书

    这篇文章主要介绍了Shell脚本实现生成SSL自签署证书,本文直接给出实现代码,代码中包含大量注释,需要的朋友可以参考下 启用 apache 的 mod_ssl 之后需要有证书才能正常运作.写了个脚本 ...

  2. 免费生成SSL泛解析证书

    免费生成SSL泛解析证书 1.前置条件 1.1.域名已备案 1.2.要申请证书的域名可以正常访问 1.3.一台LInux服务器 1.4.域名已挂载到腾讯云CDN(并非必须是鹅厂CDN解析平台.其他平台 ...

  3. yum https ssl双向认证 证书申请

    本文将着重介绍从ssl证书申请到搭建yum使用https双向认证完成rpm包安装的流程,具体https双向认证的原理在这不做详细的描述,认证的详细描述的原理可以参考: https://blog.csd ...

  4. OPENSSL生成SSL自签证书

    OPENSSL生成SSL自签证书 目前,有许多重要的公网可以访问的网站系统(如网银系统)都在使用自签SSL证书,即自建PKI系统颁发的SSL证书,而不是部署支持浏览器的SSL证书. 支持浏览器的SSL ...

  5. 生成SSL自签名证书

    自签名证书浏览器是不认可的,但学习一下还是很有必要的. 创建SSL证书私钥,期间需要输入两次用户名和密码,证书名称命名为c.key openssl genrsa -des3 -out c.key 20 ...

  6. nginx配置https访问 生成ssl自签名证书,浏览器直接访问

    问题 nginx配置自签名ssl证书,来支持https访问nginx,在浏览器中访问nginx时,提示有风险.而访问其他各大网站时,也是使用了https协议,为什么可以直接访问,而不提示有风险呢? 解 ...

  7. linux生成ssl申请文件,Shell脚本实现生成SSL自签署证书

    #!/bin/sh # # ssl 证书输出的根目录. sslOutputRoot="/etc/apache_ssl" if [ $# -eq 1 ]; then sslOutpu ...

  8. 【ESP 保姆级教程】玩转emqx SSL篇① ——认证证书 SSL

    忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️ ❤️ 本篇创建记录 2023-02-04 ❤️ ❤️ 本篇更新记录 2023-02-04 ❤️

  9. https ssl单项认证和双向认证以及证书生成

    HTTP(HyperText Transfer Protocol,超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,在TCP/IP中处于应用层.这里提一下TCP/IP的分层共分为四层:应用 ...

最新文章

  1. springboot集成neo4j
  2. open***无法启动日志报错解决方法
  3. “疫”不容辞,数据中心的“逆行之道”
  4. linux下mongdb绑定ip,Linux下MongoDB安装及副本集配置 | 聂扬帆博客
  5. 前端那些年--npm
  6. html 图片剪裁压缩,HTML5 canvas实现图片拉伸、压缩与裁剪
  7. r java_如何在R中使用JAVA写的程序包?
  8. 十一假期国人消费力爆棚,国内旅游收入超6497亿,你花了多少?
  9. (后端)SpringMVC提交数组时不能超过256个值(转)
  10. jquery's json url
  11. [转载] Java中final关键字
  12. RubyOnRails 学习网站
  13. scan函数函数用法详解
  14. 结合Zemax浅谈几何光学和信息光学中的成像,孔径光阑,视场光阑
  15. 【EXLIBRIS】#小词旮旯# 003 Comrade
  16. Jill Rides Again UVA - 507(求最大子序列和)
  17. 揭开Docker的神秘面纱
  18. C#WebApi下载文件
  19. Python网络爬虫入门案例
  20. 【矩阵论】特征值的估计(上下界和盖尔圆)

热门文章

  1. 伟大CEO毕读的50本书
  2. 企业数据作战地图,全栈数据人必备!
  3. 关于发表微信朋友圈图片的问题
  4. element-ui时间选择器限制只能点击不让输入(整理)
  5. 【C++资料免豆下载】大量教程+工具+源码下载地址汇总(转载)
  6. RC4加密以及python实现
  7. php提交数据 get 提交数据 查询数据 返回给浏览器查询到的数据
  8. Struts2项目实战 微云盘(三):DAO实现
  9. 微信小程序分销系统有哪些功能及优势?
  10. 折半查找判定树的高度-思路分享