zoukankan      html  css  js  c++  java
  • 生成https证书

    代码如下:

    #!/bin/bash
    
    hostname=192.168.157.128  //这里用你自己主机的IP
      
    rm -rf /etc/pki/CA &>/dev/null
    mkdir -p /etc/pki/CA/private && cd /etc/pki/CA
    yum -y install expect &>/dev/null
    
    #CA生成一对密钥
    (umask 077;openssl genrsa -out private/cakey.pem 2048)
    
    #提取公钥
    openssl rsa -in private/cakey.pem -pubout
    
    #生成自签署证书
    expect << EOF
         set timeout 60
         spawn openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
         expect "letter code"         {send "cn
    "}
         expect "full name"           {send "HB
    "}
         expect "city"                {send "WH
    "}
         expect "company"             {send "runtime
    "}
         expect "section"             {send "teach
    "}
         expect "hostname"            {send "${hostname}
    "}
         expect "Email"               {send "xx@xx.com
    "}
         expect "#"
    EOF
    
    #读出cacert.pem证书的内容
    openssl x509 -text -in cacert.pem
    mkdir certs newcerts crl
    touch index.txt && echo 01 > serial
    
    #安装httpd
    yum -y remove httpd &>/dev/null
    yum -y install httpd &>/dev/null
    systemctl enable --now httpd &>/dev/null
    
    #httpd服务器生成密钥
    cd /etc/httpd && mkdir ssl && cd ssl
    (umask 077;openssl genrsa -out httpd.key 2048)
    
    #生成证书签署请求
    expect << EOF
         set timeout 60
         spawn openssl req -new -key httpd.key -days 365 -out httpd.csr 
         expect "letter code"         {send "cn
    "}
         expect "full name"           {send "HB
    "}
         expect "city"                {send "WH
    "}
         expect "company"             {send "runtime
    "}
         expect "section"             {send "teach
    "}
         expect "hostname"            {send "${hostname}
    "}
         expect "Email"               {send "1@2.com
    "}
         expect "password"            {send "
    "}
         expect "company name"        {send "
    "}
         expect "#"
    EOF
    
    #CA签署客户端提交上来的证书
    expect << EOF
         set timeout 60
         spawn openssl ca -in ./httpd.csr -out httpd.crt -days 365
         expect "certificate"        {send "y
    "}
         expect "commit"             {send "y
    "}
         expect "#"
    EOF
    
    #修改配置文件
    yum -y remove mod_ssl &>/dev/null
    yum -y install mod_ssl &>/dev/null
    sed -i "s/#DocumentRoot/DocumentRoot/g" /etc/httpd/conf.d/ssl.conf
    sed -i "s/#ServerName www.example.com:443/ServerName ${hostname}:443/g" /etc/httpd/conf.d/ssl.conf
    sed -i "s#/etc/pki/tls/certs/localhost.crt#/etc/httpd/ssl/httpd.crt#g" /etc/httpd/conf.d/ssl.conf
    sed -i "s#/etc/pki/tls/private/localhost.key#/etc/httpd/ssl/httpd.key#g" /etc/httpd/conf.d/ssl.conf
    
    #重启httpd
    systemctl restart httpd &>/dev/null
    ss -antl
    Data Base Updated
    State        Recv-Q        Send-Q                 Local Address:Port                 Peer Address:Port        
    LISTEN       0             128                          0.0.0.0:22                        0.0.0.0:*           
    LISTEN       0             128                             [::]:22                           [::]:*           
    LISTEN       0             128                                *:443                             *:*           
    LISTEN       0             128                                *:80                              *:*  

     验证:

  • 相关阅读:
    2020春,不一样的学期不一样的软工实践
    尘埃落下,我抓住透明的阳光,温暖留在掌心
    敏捷软工
    《构建之法》& CI/CD调研
    2021年-软件工程-热身阅读作业
    从学生到科技工作者
    希望我能帮到你:给同学们软件开发的建议
    CC2020 分享信息
    【计算机教育】看《计算机科学导论》,发展计算思维能力
    【计算机教育】创新工程实践课程的反馈
  • 原文地址:https://www.cnblogs.com/lichouluoyu/p/14607735.html
Copyright © 2011-2022 走看看