zoukankan      html  css  js  c++  java
  • 搭建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
    
  • 相关阅读:
    【基础】jquery全选、反选、全不选代码
    【基础】jquery全选、反选、全不选代码
    收集一些程序员励志经典名言
    收集一些程序员励志经典名言
    收集一些程序员励志经典名言
    防止表单重复提交的解决方案整理
    Git使用教程
    2019牛客暑期多校训练营(第二场)J Subarray
    Hibernate-配置
    与项目欧拉速度比较:C vs Python与Erlang vs Haskell
  • 原文地址:https://www.cnblogs.com/Reaver/p/14269749.html
Copyright © 2011-2022 走看看