准备

windows版本的往往需要额外支持下载:

https://wiki.openssl.org/index.php/Binaries

https://slproweb.com/products/Win32OpenSSL.html

安装后将安装路径中的bin目录,添加到环境变量:path

openssl

dhparam

openssl dhparam用于生成和管理dh文件。dh(Diffie-Hellman)是著名的密钥交换协议,或称为密钥协商协议,它可以保证通信双方安全地交换密钥。但注意,它不是加密算法,所以不提供加密功能,仅仅只是保护密钥交换的过程。在openvpn中就使用了该交换协议。关于dh算法的整个过程,见下文。

openssl dhparam命令集合了老版本的openssl dh和openssl gendh,后两者可能已经失效了,即使存在也仅表示未来另有用途。

 

纯文本查看

cat dh.pem

 

直接替换文件内容,同时添加个性注释段在结尾

 

解析时原pem内容会在最后输出。

 

genrsa

 

genrsa生成私钥

哪里可以用:?ssh、crt

以下直接输出不同位数的rsa到控制台,不生成文件,可另存为

 

输出到文件

加个密码

 

帮助

还有无参数时

 

rsa 查看私钥、导出公钥

查看

没错,常用的是ssh

 

查看加密私钥文件

 

去除密码

加密码

更改密码

-- passin pass:123456 # 密码参数

-des3 -passout pass:abcde # 加密密码参数

 

 

输入原密码,参数指定新密码

 

仅输入新密码

 

同时输入原密码、新密码

校验文件是否被修改

当然修改后私钥是无效的,无法使用。

 

 

speed加密性能测试

测试本机的加密算法的性能(计算能力)

大概是10秒多少个:如下

177262/10s

 

rank生成伪随机数 作密码生成器

passwd

选项说明:

-crypt:UNIX标准加密算法,此为默认算法。如果加盐(-salt)算密码,只取盐的前2位,2位后面的所有字符都忽略。

-1(数字):基于MD5的算法代号。更多的算法代号见"http://www.cnblogs.com/f-ck-need-u/p/7011460.html#blog222"。

-apr1(数字):apache中使用的备选md5算法代号,不能和"-1"选项一起使用,因为apr1本身就默认了md5。htpasswd工具生成的身份验证密码就是此方法。

-salt:加密时加点盐,可以增加算法的复杂度。但加了盐会有副作用:盐相同,密码相同,加密的结果将一样。

-in file:从文件中读取要计算的密码列表

-stdin:从标准输入中获取要输入的密码

-quiet:生成密码过程中不输出任何信息

 

 

生成sha512密码

 

pkcs12 p12 pfx

pfx (外加了导入密码的二进制文件,iis中常用)<-----> crt+key之间的互转

查看一个通过在线pfx生成网站上制作的文件

windows也认扩展名为p12的导入

 

 

openssl pkcs12制作转换pfx

pfx转pem-->crt key

将PFX文件转换为PEM格式时,OpenSSL会将所有证书和私钥放入一个文件中。您需要在文本编辑器中打开该文件,并将每个证书和私钥(包括BEGIN / END语句)复制到其各自的文本文件中,并将它们分别保存为certificate.cer.crt(域名证书),CACert.cer.crt(根证书,与域名证书类似,可能不包括在其中)和privateKey.key(私钥)。

但其实命令本身的参数也是支持分开导出的(下面有示例),说明它们的生成原理中有一部分就是合并文件。ca证书和网站证书可以合并成一个证书文件,直接复制粘贴合并即可。

...

只导出ca证书或client certificate证书

 

pkcs12帮助细节

 

PEM

PEM可以简单的合并ca_certificate.crt / client_certificate.crt / client_certificate.key 来产生,复制粘贴到同一个文件即可。

或者

以此三个文件通过openssl pkcs12 命令输出pfx或p12文件,再由通过命令pfx转换为PEM(建议方案,前文有转换操作)

 

 

jks(多用于tomcat)类似于pfx

windows keytools.exe或linux中keytools工具位于jdk中

以下以windows JDK环境测试

生成jks

 

导出jks为pem

 

重要的操作是导出其中的key,crt部分是通用的。

支持在线操作,见下方在线链接(需要crt(可以是不完整证书链的证书)+key)。

 

补全证书链

myssl站点支持检测,然后提供在线补全功能。

补全实际上是添加一段ca certificate段,将其与key重新配置到nginx或封装到jks中即可使用。

文件格式与类型

提醒:扩展名不重要,扩展名的使用上,许多平台或个人也命名上没做到可识别。

  • .DER .CER,文件是二进制格式,只保存证书,不保存私钥。(windows可打开查看)
  • .PEM,一般是文本格式,可保存证书,可保存私钥。
  • .CRT,可以是二进制格式,可以是文本格式,与 .DER 格式相同,不保存私钥。(windows可打开查看)
  • .PFX .P12,二进制格式,同时包含证书和私钥,一般有密码保护。(windows可打开查看)
  • .JKS,二进制格式,同时包含证书和私钥,一般有密码保护。jdk中常用 。

 

 

配置实例

 

yum连接双向认证yum源

 

nginx

可以在线生成 https://myssl.com/create_test_cert.html

 

tomcat

或 ssl单独子标签配置

keystoreFile/certificateKeystoreFile:证书地址,可使用绝对路径,也可以配置相对路径

keyAlias/certificateKeyAlias:生成证书时输入的别名

keystorePass/certificateKeystorePassword:生成证书时输入的密钥

 

 

iis证书管理

 

 

iis6 (2003)

image-20210107111808797

iis7.5(server2008R2)

如果有到期的证书,可以先删除,再导入,否则再绑定时,你可能会选错是哪个。

image-20210107111521569

 

image-20210107111345898

确定后,等待生效。访问地址检查证书是否更新为最新的状态。

image-20210107111624774

 

 

 

x509生成证书

 

这个是证书的显示效果

image-20201228214745999

 

 

 

部分信息输出

 

 

 

ca签暑选项

x509可以将自身模拟为ca角色,实现证书自签发

 

 

流程

证书查看

命令查看

 

 

常识

应用

ssh密钥生成

注意PEM的格式是密钥文本位于一对BEGIN-END之中,但ssh的公钥不是用的这个格式,则需要ssh-keygen从已有的私钥中将公钥输出

公钥长库对比

rsa类型,命令提示不支持修改注释,rsa1(ssh1版本使用)支持

但是其实可以直接手动在pub文件中修改或添加的。

-t 加密类型

-b 位数

-f 密钥对保存路径(包含公钥+私钥)

-N 私钥口令

-C 公钥注释信息(可以用命令cat查看公钥文件,查看最后的注释,注释可以随意修改)-c -C "new commit"

yum curl 使用

 

网站使用

证书申请后,一般包括以下目录及文件

 

如何在tomcat上安装SSL证书https://support.huaweicloud.com/scm_faq/scm_01_0022.html

如何在Nginx上安装SSL证书https://support.huaweicloud.com/scm_faq/scm_01_0023.html

 

其它工具导出公钥

puttygen、xshell、securecrt均支持从私钥导出公钥。

比如putty保存的密钥文件(ppk扩展名)是公私在同一个文件中。里面表示了公钥的行数和私钥的行数,但这个是专用的不能用从ppk文本中提取相关行复制粘贴为PEM格式(BEGIN-END对)

 

网站https安全等级检测(推荐)

https://myssl.com/haudi.top?status=q

 

在线生成网站

搜索引擎关键词:ssl证书在线转换

https://myssl.com/create_test_cert.html 先生成,再转换为标准java key storeage。此可以生成自签名证书。

https://www.getssl.cn/export_keystore.php 注意大小 nginx pem4k key2k = jks3k ,另外5k一般不正常。

https://www.myssl.cn/tools/merge-jks-cert.html nginx crt+key 在线转jks(tomcat用)

https://www.myssl.cn/tools/merge-jks-cert.html

https://www.ssleye.com/jks_pkcs12.html

 

 

证书相关

 

https://developer.qiniu.com/fusion/kb/3703/the-certificate-chain-is-what 什么是证书链

 

refers