频道首页
目录
📚 openssl与CA证书
收藏
0
前言
官网:https://www.openssl.org/ OpenSSL计划在1998年开始,其目标是发明一套自由的加密工具,在互联网上使用。OpenSSL以Eric Young以及Tim Hudson两人开发的SSLeay为基础,随着两人前往RSA公司任职,SSLeay在1998年12月停止开发。因此在1998年12月,社群另外分支出OpenSSL,继续开发下去
定义概念
OpenSSL是一个加密工具包,用于实现安全套接字层(Secure Sockets Layer:SSL v2/v3)和传输层安全性(Transport Layer Security:TLS v1)网络协议及其所需的相关加密标准。
注意: 虽然OpenSSL工具可以使用SM2算法来生成并校验证书,但是在TLS握手过程中主要支持RSA和ECC算法作为公钥加密算法,不支持SM2算法,因此无法在TLS加密连接中使用SM2证书。
包括三个组件:
- libcrypto:用于实现加密和解密的库
- libssl:用于实现ssl通信协议的安全库
- openssl:多用途命令行工具
opsenssl用途
应用
- 私钥、公钥和相关参数的创建和管理。
- 公钥加密操作。
- X.509证书、CSR和CRL的创建。
- 消息挖掘的计算。
- 密码的加解密。
- SSL/TLS客户端和服务器测试。
- S/MIME签名或加密邮件的处理。
- 时间戳请求、生成和验证。
openssl命令
两种运行模式:
- 交互模式
- 批处理模式 命令+选项
三种子命令:
- 标准命令
- 消息摘要命令
- 加密命令
#centos 默认版本
openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
#ubuntu默认版本
openssl version
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
标准命令解析
asn1parse:解析ASN.1序列。
ca:证书颁发机构(Certificate Authority,CA)管理。
ciphers:加密套件描述确定。
cms:CMS(Cryptographic Message Syntax,加密消息语法)实用程序。
crl:**证书吊销列表(Certificate Revocation List,CRL)**管理。
dgst:消息摘要计算(Message Digest Calculation)。
dh:Diffie-Hellman参数管理,已被dhparam淘汰。
dhparam:Diffie-Hellman参数的生成和管理。被genpkey和pkeyparam取代。
dsa:DSA数据管理。
dsaparam:DSA参数生成和管理,被genpkey和pkeyparam取代。
ec:**EC(Elliptic curve,椭圆曲线)**密钥处理。
ecparam:EC参数操作和生成。
enc:使用加密套件进行编码。
engine:引擎(可装载模块)信息和操作。
errstr:错误编号到错误字符串的转换。
gendh:Diffie-Hellman参数的生成,已被dhparam淘汰。
gendsa:根据参数生成DSA私钥。被genpkey和pkey取代。
genpkey:私钥或参数的生成。
genrsa:RSA私钥的生成。被genpkey取代。
nseq:创建或检查netscape证书序列。
ocsp:联机证书状态协议实用程序。
passwd:生成哈希密码。
pkcs12:PKCS#12数据管理。
pkcs7:PKCS#7数据管理。
pkey:公钥和私钥管理。
pkeyparam:公钥算法参数管理。
pkeyutl:公钥算法加密操作实用程序。
rand:生成伪随机字节。
req:PKCS#10 X.509**证书签名请求(Certificate Signing Request,CSR)**管理。
rsa:RSA密钥管理。
rsautl:RSA用于签名、验证、加密和解密的实用工具。被pkeyutl取代
s_client:这实现了一个通用的SSL/TLS客户端,它可以建立到使用SSL/TLS的远程服务器的透明连接。它仅用于测试目的,仅提供基本的接口功能,但在内部主要使用OpenSSL ssl库的所有功能。
s_server:这实现了一个通用的SSL/TLS服务器,它接受来自使用SSL/TLS的远程客户端的连接。它仅用于测试目的,仅提供基本的接口功能,但在内部主要使用OpenSSL ssl库的所有功能。它既提供了自己的面向命令行的协议来测试SSL功能,也提供了一个简单的HTTP响应工具来模拟支持SSL/TLS的Web服务器。
s_time:SSL连接计时器。
sess_id:SSL会话数据管理。
smime:S/MIME邮件处理。
speed:算法速度测量。
spkac:SPKAC打印和生成实用程序。
ts:时间戳权威工具(客户端/服务器)。
verify:X.509证书验证。
version:OpenSSL版本信息。
x509:X.509证书数据管理。
生成随机密码
[root@xyy10 ~]# openssl rand -base64 12
kbGAbrk2ny88FuFy
openssl配置文件
centos中 /etc/pki/tls/openssl.cnf ubuntu中 /etc/ssl/openssl.cnf
[ ca ]
[default_ca](https://www.zhihu.com/search?q=default_ca&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A3464906308%7D) = CA_default # The default ca section
####################################################################
[ CA_default ]
# 默认CA配置
dir = /home/xxx/CA # Where everything is kept 存放CA相关信息的总目录
certs = $dir/certs # Where the issued certs are kept 颁发证书存放目录
crl_dir = $dir/crl # Where the issued crl are kept [证书吊销列表](https://www.zhihu.com/search?q=%E8%AF%81%E4%B9%A6%E5%90%8A%E9%94%80%E5%88%97%E8%A1%A8&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A3464906308%7D)目录
database = $dir/index.txt # database index file. 所有用户颁发证书的索引数据库,证书编号
#unique_subject = no # Set to 'no' to allow creation of several certs with same subject.
new_[certs_dir](https://www.zhihu.com/search?q=certs_dir&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A3464906308%7D) = $dir/newcerts # default place for new certs. 新颁发证书存储目录
certificate = $dir/rootca.pem # The CA certificate CA的[自签名证书](https://www.zhihu.com/search?q=%E8%87%AA%E7%AD%BE%E5%90%8D%E8%AF%81%E4%B9%A6&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A3464906308%7D)
serial = $dir/serial # The current serial number 每个证书的编号 序列号存放的将要颁发的证书的编号 需要赋予初始值
[crlnumber](https://www.zhihu.com/search?q=crlnumber&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A3464906308%7D) = $dir/crlnumber # the current crl number 证书吊销列表的编号
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL 证书吊销列表文件
private_key = $dir/private/rootkey.pem # The private key CA私钥
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extensions to add to the cert
# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
# Extension copying option: use with caution.
# copy_extensions = copy
# Extensions to add to a CRL. Note: Netscape [communicator](https://www.zhihu.com/search?q=communicator&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A3464906308%7D) chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions = crl_ext
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = default # use public key default MD
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_anything
# For the CA policy 证书的匹配策略
[ policy_match ]
countryName = match # 国家
stateOrProvinceName = match # 省份
organizationName = match # 组织
organizationalUnitName = optional # 部门
commonName = supplied # 通用名
emailAddress = optional # 邮箱可选
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ [policy_anything](https://www.zhihu.com/search?q=policy_anything&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A3464906308%7D) ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
主页
会议室
Git管理
文章
云文档
看板