密码学之CA的使用
实验原理
openssl是Linux内置的一款开源工具,实现了常见的密码算法与应用。通过openssl操作,完成各种密码算法的应用。
实验步骤
一、生成selfsigned证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt |
req
: 表示这是一个证书签名请求(CSR)或自签名证书的操作。-x509
: 指示OpenSSL直接生成一个自签名证书,而不是生成一个CSR。-nodes
: 表示生成的私钥不会被加密(即没有密码保护)。这便于自动化脚本或程序直接访问私钥,但在生产环境中不推荐这样做,因为它降低了安全性。-days 365
: 设置证书的有效期为365天。-newkey rsa:2048
: 表示生成一个新的RSA私钥,密钥长度为2048位。这是目前广泛接受的密钥长度,既安全又相对高效。-keyout privateKey.key
: 指定生成的私钥文件的名称。-out certificate.crt
: 指定生成的证书文件的名t称
依次输入证书的相关信息,国家,省份,城市,公司,部门,域名,邮箱
二、生成独立的CA
1、 生成ca的keyopenssl genrsa -des3 -out ca.key 4096
2、生成CA的证书openssl req -new -x509 -days 365 -key ca.key -out ca.crt
三、生成服务器的私钥key和签名请求文件csr
1、生成https服务器私钥
openssl genrsa -des3 -out myserver.key 4096 |
2、生成https服务器证书请求文件
openssl req -new -key myserver.key -out myserver.csr |
利用ca的证书和key,生成我们的证书
openssl x509 -req -days 365 -in myserver.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out myserver.crt |
Set_serial设置的证书的编号
查看证书的信息:
openssl x509 -noout -text -in myserver.crt | more |
四、验证证书
验证证书的CA
openssl verify -CAfile ca.crt myserver.crt |
去掉https服务器证书的加密保护:openssl rsa -in myserver.key -out server.key.insecure
将CRT格式转DER格式
openssl x509 -outform der -in myserver.crt -out myserver.der |
五、模拟https服务:
模拟https的服务,将结果输出到1.txt,并在后台运行openssl s_server -accept 443 -cert myserver.crt -key server.key.insecure -www >1.txt &
模拟用户连接openssl s_client -connect 127.0.0.1:443 | more
按ctrl+c中断当前查看
总结
通过新建CA服务器证书, 对https服务的csr签名,并模拟https服务器,进行访问
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 You_zip!