搭建CA认证中心

一、配置自己的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

总结:

  1. 确认安装OpenSSL
  2. 修改配置让本机成为CA认证中心
    /etc/pki/tls/openssl.cnf > 172#basicConstrains=CA:FALSE
  3. 生成CA的公钥证书和私钥(根证书包含公钥)
    /etc/pki/tls/misc/CA -newca # 填写一系列配置 前面输入2次密码 后面一个密码不输
  4. 查看CA根证书
    /etc/pki/CA/cacert.pem
  5. 查看根证书的私钥
    /etc/pki/CA/private/cakey.pem

二、HttpServer证书申请

http服务器操作

  1. http服务器生成私钥

    openssl genrsa -des3 -out /etc/httpd/conf.d/server.key #要输入2次密码

  2. 通过私钥生成【证书请求文件】

    # 执行req命令填写一系列配置 这里填写的配置要和CA认证中心填写的一致
    openssl req -new -key /etc/httpd/conf.d/server.key -out /server.csr
    # 填写过程中 CommonName必须与通过浏览器访问网站的URL完全相同
    
  3. 将【证书请求文件】发送给【认证中心】

    scp /server.csr 192.168.x.xxx:/tmp/

CA中心操作

  1. 【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
    
  2. 【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
原文地址:https://www.cnblogs.com/Reaver/p/14269749.html