当前位置: 首页 > article >正文

OpenSSL常见用法

本文主要介绍OpenSSL的常见用法。

说明:本文介绍的OpenSSL常见用法是面向Linux操作系统的。

1 概述

引用OpenSSL官网上的描述,内容如下:

OpenSSL is a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security(TLS) and Secure Sockets Layer(SSL) protocols. It is also a general-purpose cryptography library. 

2 常见用法

2.1 生成server的密钥对

使用OpenSSL的genrsa命令生成服务器的密钥对(包含公钥和私钥),命令如下:

openssl genrsa -out server-key.pem 2048

上面的命令生成一个2048 bit的密钥对,并输出到文件server-key.pem里。

server-key.pem是pem格式的,其内容如下:

[root@node1 /opt/liitdar/mydemos/simples/tls]# cat server-key.pem 
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEApAIDnEwCgXCP7ttMHnRvZh98Ud8bOOazC2pV/Kn1fE2tO4+H
...
UoiTjsO4dgR7GKwUTfx+LL/lYygy1V7OFUkbgrx63BlhNk6dSojK
-----END RSA PRIVATE KEY-----

虽然server-key.pem文件的头尾都标注着“RSA PRIVATE KEY”,但实际上这个文件中既包括公钥也包括私钥。公钥和私钥总是成对儿出现的。

2.2 生成server的身份证申请(CSR)

使用OpenSSL的req命令,把前面生成的服务器的密钥对文件server-key.pem作为输入,生成一个身份证申请(CSR)文件“server-csr.pem”。命令如下:

openssl req -nodes -new -key server-key.pem -subj "/CN=localhost" -out server-csr.pem

这个server-csr.pem中的公钥是从server-key.pem里提取出来的,域名配置为“localhost”。需要注意的是,如果将来启动一个HTTPS服务,该HTTPS服务使用了签署server-csr.pem生成的身份证CRT,那么客户端必须通过域名“localhost”访问这个HTTPS服务。

server-csr.pem文件也是PEM格式的,server-csr.pem的内容如下:

[root@node1 /opt/liitdar/mydemos/simples/tls]# cat server-csr.pem 
-----BEGIN CERTIFICATE REQUEST-----
MIICWTCCAUECAQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0B
...
cSTcWonudFFNZeRdSzcfNl8Zl0WQmOaODZ343Sc=
-----END CERTIFICATE REQUEST-----
[root@node1 /opt/liitdar/mydemos/simples/tls]# 

从上述文件内容可以看到,CSR文件的头尾都标注着“CERTIFICATE REQUEST”。

2.3 生成CA的身份证(CRT)

通过了解数字签名技术(相关文章链接点击此处),我们知道必须要有一个CA对前面生成的CSR进行签名,才能生成服务器的身份证(CRT)文件。

在这里,我们创建一个CA,并生成该CA的密钥对和自签名的身份证(CRT),过程如下。

2.3.1 生成CA的密钥对

使用OpenSSL的genrsa命令,生成CA的密钥对:

openssl genrsa -out ca-key.pem 2048

2.3.2 生成CA的身份证

使用OpenSSL的x509命令,生成CA的自签名身份证:

openssl req -x509 -new -nodes -key ca-key.pem -days 10000 -out ca-crt.pem -subj "/CN=test-ca"

上面的命令生成了CA的自签名的身份证文件ca-crt.pem。其中,ca-key.pem是前面创建的CA的私钥(其实是密钥对)。需要注意的是,因为是自签名的CA身份证,所以上面步骤中没有生成身份证申请文件(CSR)的过程,而是直接输出了CA的身份证。另外,在本例中CA的域名是“test-ca”。

2.4 生成server的身份证(CRT)

在2.3节中,我们创建了一个CA(包括密钥对和身份证),接下来就可以使用该CA为前面创建的server的CSR进行签名了。使用该CA的私钥(ca-key.pem)来签署server的身份证,命令如下:

openssl x509 -req -in server-csr.pem -CA ca-crt.pem -CAkey ca-key.pem -CAcreateserial -out server-crt.pem -days 365

上面的OpenSSL的x509命令使用指定的私钥(本例中是前面生成的CA的私钥ca-key.pem)签署身份证申请(CSR)文件(本例中是server-csr.pem),输出经CA签名的身份证(本例中是server-crt.pem)。即,server的身份证是用一个自签名的CA的来签署的。

server-crt.pem也是PEM格式的,server-crt.pem内容如下:

[root@node1 /opt/liitdar/mydemos/simples/tls]# cat server-crt.pem 
-----BEGIN CERTIFICATE-----
MIICojCCAYoCCQDLXPX19JteTzANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAd0
...
zYKS30I7
-----END CERTIFICATE-----
[root@node1 /opt/liitdar/mydemos/simples/tls]# 

由上述文件内容可以看到,CRT文件的头尾标记为“CERTIFICATE”。

注意:签署server-csr.pem得到server的身份证(server-crt.pem)的过程中,不仅需要CA的密钥ca-key.pem,还需要CA的身份证ca-crt.pem。

http://www.lryc.cn/news/2420059.html

相关文章:

  • 特殊文件:XML文件
  • 程序猿Git项目代码自动提交神器-万能shell版
  • 腾讯,百度,高德地图兴趣点(POI)的获取以及查询,逆解析解析
  • git下载安装和常用命令
  • SSH命令大解析,让你的远程连接更高效
  • MySQL 入门:Case 语句很好用
  • Swagger接口文档使用(三种)
  • UTC时间、GMT时间、CST时间
  • HTTP知识点总结,这一篇就够了
  • 一、jQuery概述
  • 【Go】超详细Go入门
  • 【VirtualBox】--- 从零开始搭建 Ubuntu系统 超详细
  • OpenCV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
  • HTML学习笔记(HTML基础篇)
  • 网址中有无 www 区别是什么
  • I tell you 如何下载文件
  • SpringBoot最常用的50个注解(全是干货,干的要死!)
  • Nodejs的详细安装过程与步骤(超详细)
  • 【MobaXterm】--- 登录SSH服务器 持续更新中
  • Nacos 入门教程
  • 再见,Anaconda的安装和配置老大难问题!
  • Pytorch 最全入门介绍,Pytorch入门看这一篇就够了_pytorch csdn
  • 【设计模式】UML建模之包图、组件图和部署图学习笔记
  • IDEA2023使用手册 【持续更新...】
  • Docker-常用命令大全(附命令详解)
  • emplode php|,PHP版单点登陆实现方案
  • 看美国影片必须了解的英文粗语脏话,好不容易整理出来的
  • 酒吧管理系统、酒吧销售系统
  • 3d弹珠小游戏的制作
  • 将Tp-link无线路由器桥接到Dlink无线路由器上