首页 > 编程知识 正文

https证书有哪些(ssl证书加密)

时间:2023-05-05 10:47:04 阅读:97269 作者:3380

最近,正在实施一个项目来管理公司的Gitlab、Wiki等。通过使用统一的认证平台。开源的统一认证服务有很多,公司选择用LDAP来实现。在配置过程中,经常需要配置域名证书,用OpenSSL配置比较麻烦。研究了一种更方便的HTTPS证书生成工具——CFSSL。

CFSSL是CloudFlare的开源PKI/TLS工具,用Go语言编写。cfssl包含四个命令:CFSSL、cfssljson、multirootca、mkbundle。前两个命令是常用的,

Cfssl:使用CFSSL包的标准命令行工具

Cfssljson:读取cfssl和multirootca的输出,将证书、私钥和CSR写入文件系统。

因为cfssl的安装是用go语言编写的,所以安装程序很方便。直接从github下载二进制文件到服务器,更改文件名和使用权限(登录github后,直接搜索CFSSL)

wget https://github.com/cloud flare/cfssl/releases/download/v 1 . 5 . 0/cfssl _ 1 . 5 . 0 _ Linux _ amd64

chmod x cfssl_linux-amd64

mvssl _ 1 . 5 . 0 _ Linux _ amd 64 cfslcfsssljson命令的安装方法类似,省略。

生成内部PKI因为公司内部有很多系统需要实现HTTPS,所以建立内部PKI很方便。首先需要生成CA的配置文件,如下。

ca-config.json

{

CN': '我公司根CA ',

key': {

algo': 'rsa ',

尺寸' : 2048

},

姓名' : [

{

C': 'CN ',

O': '我公司',

OU': '我公司根CA ',

S': '广东'

}

]

}“name”指定证书的rdns(相对可分辨名称),含义如下:

CN:通用名称

OU: OrganizationalUnit

O:组织

L:地区

S:州或省名称

C: CountryName

使用CA的配置文件生成csr、证书和密钥

cfslgencert-initCA CA-config . JSON | CFSSLJSON-Bareca观察工作目录,并添加以下三个文件,CA的签名请求文件、私钥和证书:

ca . csrca-key . PEM ca . PEM下一步,需要一个配置文件,主要指定证书的用途和到期时间。

ca-profile.json

{

签名' : {

默认' : {

到期日' : '8760h '

},

配置文件' : {

中级_ca': {

到期日' : '8760h ',

用法' : [

签名',

数字签名',

密钥加密',

证书标志',

' crl符号',

服务器身份验证

客户端身份验证

],

ca_constraint': {

ca':是真的吗,

max_path_len': 0,

max_path_len_zero': true

}

},

www': {

到期日' : '8760h ',

用法' : [

签名',

密钥加密',

服务器身份验证

] }, "client": { "expiry": "8760h", "usages": [ "signing", "key encipherment", "client auth" ] } } } }

为终端证书签名一般使用中间CA的公私钥,所以CA的profile文件中配置了“intermediate_ca” profile。因为这个原因,要再增加一个中间CA的配置文件:intermediate-ca.json,

{ "CN": "My company Intermediate CA", "key": { "algo": "rsa", "size": 4096 }, "names": [ { "C": "CN", "S": "Guangdong", "L": "Shenzhen", "O": "My company", "OU": "My company Intermediate CA" } ], "ca": { "expiry": "42720h" } }

生成中间CA的CSR、证书和私钥,

cfssl gencert -initca intermediate-ca.json | cfssljson -bare intermediate_ca

用根CA证书和私钥签中间CA的证书,这是比较关键的一步,

cfssl sign -ca ca.pem -ca-key ca-key.pem -config ca-profile.json -profile intermediate_ca intermediate_ca.csr | cfssljson -bare intermediate_ca

执行上面的命令后,中间证书就被根CA签名了。

生成HTTPS证书

上面的操作都是为生成HTTPS证书做准备。配置指定域名的证书配置文件,如域名为www.mycompany.com,文件host-1-config.json内容如下:

{ "CN": "www.mycompany.com", "key": { "algo": "rsa", "size": 4096 }, "names": [ { "C": "CN", "L": "Shenzhen", "O": "My company", "OU": "host-1" } ], "hosts": [ "www.mycompany.com" ] }

生成域名证书和私钥并使用中间CA完成签名:

cfssl gencert -ca intermediate_ca.pem -ca-key intermediate_ca-key.pem -config ca-profile.json -profile=www host-1-config.json | cfssljson -bare host-1-server

查看工作目录,域名的证书和私钥已经生成了:

[root@test]$ls -lh | grep host-1 -rw-rw-r-- 1 yunwei-op yunwei-op 230 May 14 11:49 host-1-config.json -rw-r--r-- 1 yunwei-op yunwei-op 1.8K May 14 11:50 host-1-server.csr -rw------- 1 yunwei-op yunwei-op 3.2K May 14 11:50 host-1-server-key.pem -rw-rw-r-- 1 yunwei-op yunwei-op 2.1K May 14 11:50 host-1-server.pem

使用openssl命令查看host-1-server.pem,可以看到它已经被中间CA正确地签名了,

openssl x509 -noout -text -in host-1-server.pem证书的Subject域

以上面生成的证书为例:

Certificate: Data: Version: 3 (0x2) Serial Number: 5e:cc:ed:9d:96:8b:db:0a:8e:a7:ad:f0:eb:87:20:5e:bd:7c:c9:48 Signature Algorithm: sha512WithRSAEncryption Issuer: C=CN, L=Shenzhen, O=My company, OU=My company Intermediate CA, CN=My company Intermediate CA Validity Not Before: May 14 03:46:00 2021 GMT Not After : May 14 03:46:00 2022 GMT Subject: C=CN, L=Shenzhen, O=My company, OU=host-1, CN=www.mycompany.com Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (4096 bit) ......

Common Name:简写为CN,如果是SSL证书,通常是网站的域名;如果是用户证书(在OpenVPN配置中可能会用到),是证书申请者的名字。

Organization Name:简写为O,如是SSL证书,同上;如果是用户证书,是证书申请者的位置,比如部门名。

总结

本文介绍CFSSL工具的使用,依赖CFSSL可以快速地建立公司内部的PKI,签发服务器域名证书也非常方便。

希望这篇文章能帮到正在努力的你,欢迎关注、评论。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。