CentOS7 内网IP自签SSL证书
一、概念
1.1、TLS
传输层安全协议 Transport Layer Security
作为SSL协议的继承者,成为下一代网络安全性和数据完整性安全协议
1.2、SSL
安全套接字层 Secure Socket Layer
位于TCP/IP中的网络传输层,作为网络通讯提供安全以及数据完整性的一种安全协议
1.3、HTTPS
HTTP+SSL(secure socket layer)/TLS(Transport Layer Security)协议,HTTPS协议为数字证书提供了最佳的应用环境
1.4、OpenSSL
相当于SSL的一个实现,如果把SSL规范看成OO中的接口,那么OpenSSL则认为是接口的实现。接口规范本身是安全没问题的,但是具体实现可能会有不完善的地方,比如之前的"心脏出血"漏洞,就是OpenSSL中的一个bug.
1.5、CA
数字证书颁发认证机构 Certification authority
包含多种密码学算法:
消息摘要算法:MD5、和SHA(对数字证书本省做摘要处理,用于验证数据完整性服务器)
对称加密算法:RC2、RC4、IDEA、DES、AES(对数据进行加密/解密操作,用于保证数据保密性服务)
非对称加密算法:RSA、DH(对数据进行加密/解密操作,用于保证数据保密性服务)
数字签名算法:RSA、DSA(对数据进行签名/验证操作,保证数据的完整性和抗否认性)。
1.6、KEY
通常指私钥
1.7、CSR
Certificate Signing Request的缩写,即证书签名请求,这不是证书,可以简单理解成公钥,生成证书时要把这个提交给权威的证书颁发机构。
1.8、CRT
certificate的缩写,即证书。
1.9、X.509
一种证书格式.对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。
X.509的证书文件,一般以.crt结尾,根据该文件的内容编码格式,可以分为以下二种格式:
PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN…"开头, "-----END…"结尾,内容是BASE64编码. Apache和*NIX服务器偏向于使用这种编码格式.
DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.Java和Windows服务器偏向于使用这种编码格式
二、生成证书
前面有篇文章:CentOS7 安装 Nginx,设置自启动及站点配置介绍过Nginx安装时,附加安装 openssl。
这里就不说了,直接看版本信息。
openssl version -a
看到对应版本及所在目录。
下面开始实操:
1、创建操作目录:
我这边创建了 /opt/ssl 目录,专门用来存放所有证书。
2、证书创建流程
CA密钥 --> CA证书请求文件 -->CA证书
↓
服务端证书密钥 --> 服务端证书请求文件 --> 服务端证书
3、执行过程
# 生成私钥和证书请求文件 openssl req -newkey rsa:2048 -nodes -keyout ca.key -out ca.csr
# 需要输入一下内容,冒号后面的部分,有两次,内容要保持一致。 Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:js Locality Name (eg, city) [Default City]:wx Organization Name (eg, company) [Default Company Ltd]:on Organizational Unit Name (eg, section) []:rd Common Name (eg, your name or your server's hostname) []:10.12.42.235 #生成自签署CA证书 openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt # 生成服务器端证书密钥 openssl genrsa -out server.key 2048 #服务器端证书请求文件,输入内容同上 openssl req -new -key server.key -out server.csr Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:js Locality Name (eg, city) [Default City]:wx Organization Name (eg, company) [Default Company Ltd]:on Organizational Unit Name (eg, section) []:rd Common Name (eg, your name or your server's hostname) []:10.12.42.235 #生成服务器端证书 openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650
以上过程里,请求文件输入内容按照实际情况调整,主要是对应的IP地址,还有证书有效期我这边用了3650天,也就是10年。
其它保持两次输入一致就可以了。
对应的 server.crt 和 server.key 配置到站点或者代理服务器上就可以。
具体配置 CentOS7 安装 Nginx,设置自启动及站点配置 也有的,我这边是用在内网搭建的 MQTTS 环境测试的。
配置略有不同,有兴趣的也可以看一下。
注:文强哥精品集,祝各位使用愉快!