美文网首页codingMacTribe(如何优雅的使用Mac)Mac优雅使用指南
OpenSSL证书生成及Mac上Apache服务器配置HTTPS

OpenSSL证书生成及Mac上Apache服务器配置HTTPS

作者: Roy_Liang | 来源:发表于2017-03-02 15:07 被阅读2455次


    • 自签名证书

    • 配置Apache服务器SSL

    • 自己作为CA签发证书


    这里是OpenSSL和HTTPS的介绍
    OpenSSL
    HTTPS

    开启HTTPS配置前提是已在Mac上搭建Apache服务器
    Mac上Apache服务器搭建

    先在桌面创建个SSL文件夹,用来放生成的私钥证书文件
    打开终端cd到SSL文件夹
    cd desktop/SSL

    1. 自签名证书

    (1) 在SSL文件夹中生成私钥
    openssl genrsa -out server.key 2048
    
    生成rsa私钥,2048位强度,server.key是秘钥文件名
    (2) 生成自签名证书
    openssl req -new -sha256 -x509 -days 365 -key server.key -out server.crt
    
    输入信息

    Common Name应该与域名保持一致(如我的电脑搭建的服务器IP地址为192.168.1.112)

    2. 配置Apache服务器SSL

    (1) 放入证书

    server.crtserver.key两个文件拷贝
    放到/etc/apache2/目录

    (2) 修改配置文件
    • 编辑/etc/apache2/httpd.conf文件
      去掉下面三行的注释#号

      LoadModule ssl_module libexec/apache2/mod_ssl.so
      Include /private/etc/apache2/extra/httpd-vhosts.conf
      Include /private/etc/apache2/extra/httpd-ssl.conf

    • 打开/etc/apache2/extra/httpd-ssl.conf文件
      去掉以下两项注释并检查是否与之前安装私钥和证书的路径一致

      SSLCertificateFile "/etc/apache2/extra/ssl/server.crt"
      SSLCertificateKeyFile "/etc/apache2/extra/ssl/private.key"

    • 编辑/etc/apache2/extra/httpd-vhosts.conf文件
      在<VirtualHost *:80> .....</VirtualHost>后面添加一段如下内容:
    <VirtualHost *:443>
        SSLEngine on
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile /private/etc/apache2/server.crt
        SSLCertificateKeyFile /private/etc/apache2/server.key
        ServerName 192.168.1.112 
        DocumentRoot "/Library/WebServer/Documents"
    </VirtualHost>
    

    注意ServerName填写域名与所需访问一致

    (3) 重启服务器
    sudo apachectl restart
    

    访问https://192.168.1.112/
    提示不安全什么的(因为自己的证书没添加到浏览器信任列表),继续访问

    HTTPS访问成功

    HTTPS可以用啦
    此处应有掌声👏👏👏👏

    3. 自己作为CA签发证书

    (1) 生成CA根证书

    其实就是自签名证书

    先在桌面的SSL文件夹里创建个CA文件夹,用来存放放自己作为CA生成的私钥证书文件
    打开终端cd到CA文件夹
    cd desktop/SSL/CA

    • 私钥
    openssl genrsa -des3 -out ca.key 4096
    

    这里使用-des3进行加密,需要四位以上密码

    • 证书
    openssl req -new -x509 -days 365 -key ca.key -out ca.crt
    

    按1自签名证书流程,得到ca.key和ca.crt


    (2 )创建服务器私钥
    openssl genrsa -out server.key 4096
    
    (3) 生成证书请求文件CSR
    openssl req -new -key server.key -out server.csr
    

    此时已得到如下4个文件


    (4) 自己作为CA签发证书
    openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -days 365
    

    然后需要输入生成ca.key时设置的密码

    • 接着遇到一个问题:
      I am unable to access the ./demoCA/newcerts directory ./demoCA/newcerts: No such file or directory
    • 解决方法
      没有目录创造目录也要上
      执行以下几条命令创建所需的目录及文件
    mkdir -p ./demoCA/newcerts
    touch demoCA/index.txt
    touch demoCA/serial
    echo 01 > demoCA/serial
    

    创建好所需目录及文件


    重新执行命令

    openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -days 365
    

    输入ca.key密码
    然后会打印出证书详细进行确认



    输入两次y

    得到最终生成的所有文件

    所有生成文件

    图示server.crt即自己作为CA签发的服务器证书


    (5)测试
    • *测试1 CA生成服务器证书可用性:
      (1)前往/etc/apache2/文件夹

      (2)删除原来自签名证书两个文件
      (3)发现https://192.168.1.112/已经不能访问(能访问有可能是缓存,可以刷新或重启Apache)
      (4)将CA生成的server.key和server.crt两个文件拷贝进去
      (5)https://192.168.1.112/ 又可以访问成功(👏👏👏👏👏)
    • *测试2 CA根证书可用性:
      (1)新打开https://192.168.1.112/ ,由于自己的CA根证书未在信任列表,会有警告



      (2)双击ca.crt安装(我这里使用的是Mac电脑)
      (3)到钥匙串访问,找到安装的证书,右键点击 → 显示简介 → 设置始终信任
      (4)发现https://192.168.1.112 不再警告(👏👏👏👏👏)


    ~ ~ ~ ~ ~ ~ end ~ ~ ~ ~ ~ ~ by Roy
    --------愿您有所收获


    相关文章

      网友评论

      • Paycation:感谢。亲测有效。不过我设置的各种 IP 都是 127.0.0.1 也没有问题,我只是单机测试。
      • 恋_时光:您好, 请问一下, 按照文章的步骤配置成功后, 安装并信任在证书, 但是在浏览器打开时还是提示证书不可信。 item-server安装ipa也提示无法连接到xxx.xx.x.xxx。 这是什么问题, 怎么解决啊
        NeuBLUE:@恋_时光 对的,我也是同样的问题,确实是不提示私密连接了,但是总显示不安全,证书无效,点开看又是有效的啊
        恋_时光:@煎饼果子斯基 信任过了,证书的问题,不知道哪里不对,在网上生成的证书可以
        煎饼果子斯基:设置-> 通用 -> 描述文件 -> 信任
      • 3c00fd56bec0:WSNs-iMac:CA Neo$ openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -days 365
        Using configuration from /private/etc/ssl/openssl.cnf
        variable lookup failed for ca::default_ca
        140735936902024:error:0E06D06C:configuration file routines:NCONF_get_string:no value:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22/libressl/crypto/conf/conf_lib.c:323:group=ca name=default_ca
        勿忘初心_5ba9:同样遇到此问题,请问解决了吗?
        Evans_Xiao:@提督很忙 解决了吗
        3c00fd56bec0:这是什么错误啊
      • ac9ab8b5c1e3:将server.crt和server.key两个文件拷贝放到/etc/apache2/目录,后面编辑/etc/apache2/extra/httpd-ssl.conf文件时:
        SSLCertificateFile "/etc/apache2/extra/ssl/server.crt"
        SSLCertificateKeyFile "/etc/apache2/extra/ssl/private.key"
        修改为(需要对应路径)
        SSLCertificateFile "/etc/apache2/server.crt"
        SSLCertificateKeyFile "/etc/apache2/server.key"
      • tangshu:编辑/etc/apache2/httpd.conf文件时,少了一步:
        将LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so前面的#去掉
        环境:Mac OS 10.12.6 (16G29)
        Roy_Liang:以前用的时候没看到需要注释掉这个。文中已改。
        床前明月_光:说的对,大家看这篇文章的时候,记得把这一步加上。我就是被坑了,错漏百出的文章,希望作者能检查一下
      • Albus111:大神,用这种方法生成的证书可以用在linux云服务器上嘛?
      • WeiHing:请问一下 ip 192.168.1.112 是随便写一个也可以吗
        Roy_Liang:@星星星星儿 是手机连接的电脑的ip
      • 3423d6afcf82:还有一个问题,我在配置的时候 发现我没有NameVirtualHost*:80,终端打开是这样的
        <VirtualHost *:80>
        ServerAdmin webmaster@dummy-host.example.com
        DocumentRoot "/usr/docs/dummy-host.example.com"
        ServerName dummy-host.example.com
        ServerAlias www.dummy-host.example.com
        ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
        CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
        </VirtualHost>

        <VirtualHost *:80>
        ServerAdmin webmaster@dummy-host2.example.com
        DocumentRoot "/usr/docs/dummy-host2.example.com"
        ServerName dummy-host2.example.com
        ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
        CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
        </VirtualHost>

        <VirtualHost *:443>
        SSLEngine on
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile /private/etc/apache2/server.crt
        SSLCertificateKeyFile /private/etc/apache2/server.key
        ServerName 192.168.3.2
        DocumentRoot "/Library/WebServer/Documents"
        </VirtualHost>

        是我哪里配置错了吗??
        Roy_Liang:抱歉,刚仔细看了下。就是<VirtualHost *:80> .....</VirtualHost>这一段后面的。
      • 3423d6afcf82:请问 我配置成功了 把plist文件和ipa包放到这个服务器下,在手机下载的时候 一直提示我没有权限是什么原因呢?
        Forbidden

        You don't have permission to access /ca.crt on this server.
        Roy_Liang:后面可以了么,是什么原因?

      本文标题:OpenSSL证书生成及Mac上Apache服务器配置HTTPS

      本文链接:https://www.haomeiwen.com/subject/toosittx.html