实验原理

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称

image-20240828132508213

依次输入证书的相关信息,国家,省份,城市,公司,部门,域名,邮箱

image-20240828132533733

image-20240828132542275

二、生成独立的CA

1、 生成ca的key
openssl genrsa -des3 -out ca.key 4096

image-20240828132707898

2、生成CA的证书
openssl req -new -x509 -days 365 -key ca.key -out ca.crt

image-20240828132820060

三、生成服务器的私钥key和签名请求文件csr

1、生成https服务器私钥

openssl genrsa -des3 -out myserver.key 4096

image-20240828133703355

2、生成https服务器证书请求文件

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

image-20240828133924097

利用ca的证书和key,生成我们的证书

openssl x509 -req -days 365 -in myserver.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out myserver.crt

Set_serial设置的证书的编号

image-20240828134035125

查看证书的信息:

openssl x509 -noout -text -in myserver.crt | more

image-20240828134101620

四、验证证书

验证证书的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

image-20240828134153488

五、模拟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服务器,进行访问