①基本概念
HTTP(Hypertext Transfer Protocol)
超文本传输协议,使用该协议进行访问的数据是没有任何加密措施的,任何人都可以使用监听等手段窃取传输过程中的信息数据,因此是一种不安全的传输协议。
HTTPS(Hypertext Transfer Protocol Secure)
超文本传输安全协议,基于HTTP的基础之上结合了SSL与TLS协议,提供了加密通讯以及服务器身份鉴定的能力,是一种安全的传输协议。
SSL(Secure Socket Layer)
安全套接层,通俗点说就是数据加密,它的作用就是对服务器与客户端之间传输的数据流进行加密。
SSL证书
可以理解为服务器的“营业执照”,通常由公认受信的互联网数字证书颁发机构,也就是CA(Certificate Authority),经过服务器身份验证后所签发的“营业执照”,即SSL证书
域名
可以理解为一个网站的标识符,访问一个网站需要知道对应服务器的IP地址,但是如果靠IP地址来记忆对应的网站着实有些麻烦,而域名的存在便是简化了这种访问成本,例如本站的域名是
elysium-stack.cn
,当你访问本站时你不需要知道本站的IP是什么,DNS服务器会自动将域名进行解析并找到对应的站点IP地址,从而进一步访问,通常域名会与SSL证书进行绑定。
②为什么要使用SSL证书
最根本的目的是保护数据在传输过程中安全!同时如果你的系统如果要做信息安全等级保护(即等保测评),那么就必须要使用HTTPS。到这里你可能已经发现了一个问题:
Q:如果我的系统部署在内网,CA没办法验证我的服务器,我不就拿不到签发的SSL证书了吗?
A:是的,内网服务肯定拿不到由权威CA签发的证书,但是可以使用自签证书
③什么是自签证书
讲人话就是自己手搓的SSL证书,同时自签证书又分为两种:
带CA的自签证书
一般会用这个(本文也将以此为例),手搓一个CA,然后用这个CA所签发的证书,便于管理与控制。
不带CA的自签证书
直接手搓的证书。
④创建CA证书与自签证书
正片开始 接下来笔者会详细说明如何构建自己的CA以及如何通过自己的CA来签发证书
前置条件:
一台linux服务器或mac电脑
OpenSSL库(笔者的版本是
3.0.13
)一个自定义的域名,但必须要满足域名的命名规则
以下笔者会以test.study.cn域名为例
第一步:创建自定义CA密钥
在控制台中输入以下命令
# customCA这个名字可以自己改
openssl genrsa -des3 -out customCA.key 2048
接着会提示Enter PEM pass phrase
与Verifying - Enter PEM pass phrase
,创建一个密码并二次确认,记住这个密码,后面会用到!
然后在目录中会自动生成文件customCA.key
第二步:根据CA密钥,创建CA证书
在控制台中输入以下命令
# customCA.key是第一步中生成的,3650是证书的有效期(单位:天),那这里就是10年的有效期
openssl req -x509 -new -nodes -key customCA.key -sha256 -days 3650 -out customCA.pem
接着会提示Enter pass phrase for customCA.key
要求输入第一步中你创建的密码,输入即可
验证通过后需要填写关于CA的信息,来看一下都是什么意思:
填写完成后,会在目录下生成pem格式的CA证书文件customCA.pem
,但我们需要把它转成crt格式,输入以下命令
# customCA.pem是刚才生成的pem格式证书
openssl x509 -outform der -in customCA.pem -out customCA.crt
然后我们会得到一个crt格式的CA证书文件customCA.crt
第三步:创建用以生成域名证书的配置文件
输入以下命令(一行一行输入)
cat >> study.ext <<EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName=@alt_names
[alt_names]
# 注意这里test.study.cn是需要关联的域名,替换成你自己的即可
DNS.1 = test.study.cn
EOF
然后我们会得到一个study.ext
的配置文件
第四步:创建域名证书密钥
输入以下命令
# test.study.cn.csr和test.study.cn.csr.key是域名test.study.cn.csr的密钥
openssl req -new -sha256 -nodes -out test.study.cn.csr -newkey rsa:2048 -keyout test.study.cn.csr.key
接着需要填写关于域名的信息,也还是先看一下都是什么意思:
第五步:根据【第一步的CA密钥】、【第二步的CA证书】、【第三步的配置文件】、【第四步域名证书密钥】生成自签域名证书
只需一行命令,如下:
# 365是证书的有效期(单位:天),那这里就是1年的有效期
openssl x509 -req -in test.study.cn.csr -CA customCA.pem -CAkey customCA.key -CAcreateserial -out test.study.cn.crt -days 365 -sha256 -extfile study.ext
提示需要输入【第一步的CA证书密码】,输入即可
完成后,我们就能得到自定义CA证书与域名test.study.cn的SSL自签证书
评论