OpenSSL 安装配置

 加密解密和签名区别

公钥加密数据,然后私钥解密的情况被称为加密解密,私钥加密数据,公钥解密一般被称为签名和验证签名.

 openssl中的算法

OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。

 ca证书由专门的机构颁发

 

 

 

 

如何使用

1.下载地址

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

2.安装

一直下一步

3.配置环境变量

 

3.1创建私钥

生成 私钥文件 文件名server.key的密钥  

openssl genrsa -out server.key 2048

 

3.2通过命令行交互方式创建证书申请文件

CSR是Certificate Signing Request的英文缩写,即证书签名请求文件,是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。

生成证书签名请求文件 

server.csr
openssl req -new -key server.key -out server.csr

 

3.3用私钥签名证书申请文件,创建有效时间为10年的自签名证书

生成了一个证书 server.crt

openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650

 

3.4删除密钥中的密码(如果不删除密码,在应用加载的时候会出现输入密码进行验证的情况,不方便自动化部署。)

openssl rsa -in server.key -out server.key

 

3.5生成pem格式的公钥

有些服务,需要有pem格式的证书才能正常加载,可以用下面的命令:

openssl x509 -in server.crt -out server.pem -outform PEM -days 365

 

-new:表示生成一个新证书签署请求

-x509:专用于CA生成自签证书,如果不是自签证书则不需要此项

-key:生成请求时用到的私钥文件

-out:证书的保存路径

-days:证书的有效期限,单位是day(天),默认是365天

 

 

4.将证书和私钥合并为 pfx 文件

舍弃 3.4 和 3.4 步骤

openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

需要输入一个密码。假设123456

 

server.crt 证书不包含秘钥,需要搭配server.key使用

.pfx 是 PKCS#12 格式的证书文件,它包含了公钥、私钥和证书链

 

这将将 server.crtserver.key 文件合并为 server.pfx 文件。

生成的 server.pfx 文件包含了公钥、私钥和证书链。它可以用于使用 SSL 保护的 Web 服务器。

以下是每个命令的详细说明:

  • openssl genrsa:生成 RSA 私钥。

  • -out:指定私钥文件的名称。

  • 2048:指定私钥的长度。

  • openssl req:生成证书签名请求。

  • -new:生成新请求。

  • -key:指定私钥文件的名称。

  • -out:指定 CSR 文件的名称。

  • openssl x509:生成 SSL 证书。

  • -req:使用 CSR 文件进行签名。

  • -days:指定证书的有效期(以天为单位)。

  • -in:指定 CSR 文件的名称。

  • -signkey:指定私钥文件的名称。

  • -out:指定证书文件的名称。

  • openssl pkcs12:将证书和私钥合并为 pfx 文件。

  • -export:将证书和私钥导出为 pfx 文件。

  • -out:指定 pfx 文件的名称。

  • -inkey:指定私钥文件的名称。

  • -in:指定证书文件的名称。

 

 

postman 调用接口会提示 Self signed certificate  (自签名证书)

 

 

C#使用

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .UseSerilog()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>()
                     .UseUrls(config["Url2"])
                    .UseKestrel(option =>
                            {
                                option.ConfigureHttpsDefaults(i =>
                                {
                                    i.ServerCertificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(@"D:\mes\server.pfx", "123456");
                                });
                            })
       ;});

 

 

本地运行正常,windowsserver2016上运行报指定的网络密码不正确的错误。好像是需要更高级服务器版本才能支持。这个版本默认的加密是AES256,而Windows Server 2016不支持这个版本加密。

OpenSSL 1.0 和 1.1 的默认加密方式是 RC4。

OpenSSL3 默认的加密方式是 AES-256-GCM

 

openssl enc -ciphers 命令来查看支持的加密方式列表

 

 

报 The server mode SSL must use a certificate with the associated private key. 错误

 

posted @ 2021-10-29 15:06  富坚老贼  阅读(408)  评论(0编辑  收藏  举报