一、配置自己的CA认证中心
生成CA的根证书和私钥
修改配置文件
#让自己成为CA认证中心
$ vim /etc/pki/tls/openssl.cnf
#修改 172行为 basicConstraints=CA:TRUE
操作生成CA根证书
$ /etc/pki/tls/misc/CA -h
-
-newcert 新证书
-
-newreq 新的请求
-
-newreq-nodes 新的请求节点
-
-newca 新的CA证书
-
-sign 签证
-
-verify 验证
>> /etc/pki/tls/miss/CA -newca
Enter PEM pass phrase 这里输入密码保护CA私钥
Verifying - Enter PEM pass phrase 再次确认密码
...其他步骤按照要求填写即刻 国家 省份 姓名 邮箱等
Enter pass phrase for /etc/pki/CA/private/./cakey.pem: 输入刚才保护CA私钥的密码
# 看到以下表示CA认证中心搭建成功
Enter pass phrase for /etc/pki/CA/private/./cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
ef:13:d8:d6:bd:ab:be:87
Validity
Not Before: Jan 12 03:42:17 2021 GMT
Not After : Jan 12 03:42:17 2024 GMT
Subject:
countryName = CN
stateOrProvinceName = beijing
organizationName = test
organizationalUnitName = IT
commonName = test
emailAddress = teset@gmail.com
X509v3 extensions:
X509v3 Subject Key Identifier:
B8:48:68:28:7F:45:F0:A6:91:97:2A:85:81:71:A5:1F:87:AB:B6:AE
X509v3 Authority Key Identifier:
keyid:B8:48:68:28:7F:45:F0:A6:91:97:2A:85:81:71:A5:1F:87:AB:B6:AE
X509v3 Basic Constraints:
CA:TRUE
Certificate is to be certified until Jan 12 03:42:17 2022 GMT (1095 days)
Write out database with 1 new entries
Data Base Updated
总结:
- 确认安装OpenSSL
- 修改配置让本机成为CA认证中心
/etc/pki/tls/openssl.cnf > 172#basicConstrains=CA:FALSE
- 生成CA的公钥证书和私钥(根证书包含公钥)
/etc/pki/tls/misc/CA -newca # 填写一系列配置 前面输入2次密码 后面一个密码不输
- 查看CA根证书
/etc/pki/CA/cacert.pem
- 查看根证书的私钥
/etc/pki/CA/private/cakey.pem
二、HttpServer证书申请
http服务器操作
-
http服务器生成私钥
openssl genrsa -des3 -out /etc/httpd/conf.d/server.key #要输入2次密码
-
通过私钥生成【证书请求文件】
# 执行req命令填写一系列配置 这里填写的配置要和CA认证中心填写的一致 openssl req -new -key /etc/httpd/conf.d/server.key -out /server.csr # 填写过程中 CommonName必须与通过浏览器访问网站的URL完全相同
-
将【证书请求文件】发送给【认证中心】
scp /server.csr 192.168.x.xxx:/tmp/
CA中心操作
-
【CA认证中心】对发送过来的 【证书请求文件】进行签名
# -keyfile用哪个私钥签名 -in 签那个文件 openssl ca -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -in /tmp/server.csr -out /server.crt
-
【CA认证中心】把证书复制回 【http服务器】
scp /server.crt 192.168.x.xxx:/
三、使用证书实现https
Apache
# 安装apache
yum install httpd -y
# 修改ServerName为ip地址
vim / etc/httpd/conf/httpd.conf
# 复制证书
>> cp /server.crt /etc/httpd/conf.d/
# 查看私钥
>> ls /etc/httpd/conf.d/server.key
# 修改配置 (需要安装mod_ssl)
>> vim /etc/httpd/conf.d/ssl.conf
# 修改100行 SSLCertificateFile /etc/httpd/conf.d/server.crt 为自己存放 server.crt路径
# 108行 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 为指定私钥.key路径
# 启动服务
>> systemctl start httpd
>> iptables -F
Enter SSL pass phrase for xxx.cn:443 (RSA):123456 #设置https私钥密码
# 查看端口
>> netstat -antup | grep 443
# 最后打开网页进行测试
Nginx
#nginx需要特别注意一点需要设置免密码启动,不然会报错
nginx Enter PEM pass phrase: nginx: [emerg] cannot load certificate key "/etc/ssl/server.key"
#改成免密方式
openssl rsa -in server.key -out server.key.nopassword
# nginx配置
server {
listen 443 ssl;
server_name xxx.com;
ssl on;
ssl_certificate /etc/ssl/server.crt; #证书
ssl_certificate_key /etc/ssl/server.key.nopassword; #私钥
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;
ssl_session_cache builtin:1000 shared:SSL:10m;
...
}
# 启动nginx
>> systemctl start nginx