Windows 安装 OpenSSL 生成自签名证书

文章目录

  • Windows 安装 OpenSSL 生成自签名证书
    • Windows 安装 OpenSSL
      • 验证安装是否正确
    • 了解自签名证书
    • 生成自签名证书
      • .pfx 证书和 .cer 证书

Windows 安装 OpenSSL 生成自签名证书

Windows 安装 OpenSSL

下载openssl.exe:适用于 Windows 的 Win32/Win64 OpenSSL 安装程序

image-20240123103249029

  • Win64 OpenSSL v1.1.1i Light,安装Win64 OpenSSL v1.1.1i最常用的软件包
  • Win64 OpenSSL v1.1.1i,安装Win64 OpenSSL v1.1.1i完整软件包
  • Win32 OpenSSL v1.1.1i Light,安装Win32 OpenSSL v1.1.1i最常用的软件包
  • Win32 OpenSSL v1.1.1i,安装Win32 OpenSSL v1.1.1i完整软件包

Select Additional Tasks:让选择OpenSSL的dll拷贝到什么地方

建议,不要拷贝到系统目录下,如果其他软件使用的OpenSSL版本与你安装这个版本不同,可能导致该软件无法使用。所以让这些dll待在OpenSSL安装目录下即可。

image-20240123103443911

全取消就是不捐款

image-20240123103721065

验证安装是否正确

安装目录

image-20240123103957670

直接在cmd中,输入命令,查看OpenSSL版本

openssl version

将openssl命令行工具路径添加到系统变量Path

image-20240123104421803

结果,并不是我们安装的1.1.1i版

image-20240123104649215

原因: 如果电脑上已经安装过其他软件,比如Git、VMware、Strawberry等,那么他们都自带了openssl,所以在cmd中使用openssl命令时,可能会调用到其他版本的openssl。

image-20240123105400641

了解自签名证书

如果生成的证书被妥善保管(即不泄漏并被二次利用)并将其加入有限的设备(自用、团队使用)的证书信任列表中,再明确设备访问地址(不涉及DNS攻击),是不会遇到中间人攻击的。

image-20240123111754605

比如遇到类似下面的场景不一定会遇到不安全的事情,有可能只是管理员忘记换掉过期证书、或者自己生成证书后使用了一台没有信任证书的设备进行访问、也可能是管理员压根没有想在公网签发证书,想做一个私有的网站:

image-20240123111846255

生成自签名证书

  1. 新建文件cert放证书,在此目录下生成密钥,生成自签名证书
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 3650 -subj "/C=CN/CN=ioufev.com" -out cert.crt
  • 输出的密钥:key.pem
  • 输出的证书:cert.crt
  • 证明的信息:/C=CN/CN=ioufev.com

最简单的证明信息要有

  • C=CN,表示中国
  • CN=ioufev.com,证书绑定域名:ioufev.com

image-20240123110235759

image-20240123110254068

image-20240123110626065

  1. 将密钥和证书合并成一个 pfx 文件,并输入文件保护密码:12345678
openssl pkcs12 -export -in cert.crt -inkey key.pem -out test.pfx -name test
  • 输入的密钥:key.pem
  • 输入的证书:cert.crt
  • 输出的 pfx 证书:test.pfx
  • 输出证书的名字:test,不加 -name test 的话,默认名字是 1

.pfx 证书和 .cer 证书

通常情况下,作为文件形式存在的证书一般有三种格式:

  • 第一种:带有私钥的证书,由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以.pfx作为证书文件后缀名。
  • 第二种:DER Encoded Binary (.cer) 二进制编码的证书,证书中没有私钥,DER 编码二进制格式的证书文件,以.cer作为证书文件后缀名。
  • 第三种:Base64 Encoded(.cer),Base64编码的证书,证书中没有私钥,BASE64 编码格式的证书文件,也是以.cer作为证书文件后缀名。

由定义可以看出,只有pfx格式的数字证书是包含有私钥的,cer格式的数字证书里面只有公钥没有私钥。

Cer证书只包含公钥信息,如果客户端与网站通信时需要用到私钥(基本所有需要数字证书的网站都会用到私钥),则cer证书是无法正常访问网站的,网站会提示“该页要求客户证书”。由于cer证书只包含公钥信息,一般只能用于解密使用(解密该公钥对应的私钥加密的数据)。在申请证书的机器上存储了私钥信息,因此,可以把CER证书导入为PFX证书,并可以把PFX证书导出,这样其他机器就可以安装PFX证书了。

Pfx证书既可以导出为pfx证书,也可以导出为cer证书。Pfx证书导出时,会提示是否导出私钥,导出私钥即pfx证书,不导出私钥就是cer证书。如果选择导出私钥,出于安全性考虑,需要指定一个密码来保护该私钥,后续再次导入该pfx证书时,需要提供保护该私钥密码,才能在机器上安装证书。

image-20240123110653160

image-20240123110726539

image-20240123110751062

qiTr-1705980039012)]

[外链图片转存中…(img-JNmQPxaw-1705980039012)]

[外链图片转存中…(img-VWWmtEIV-1705980039012)]

image-20240123110804274