构建过程

  1. 这里使用 LAMP 构建服务器,所以第一步就是搭建好环境,默认以及成功

  2. 修改配置文件,是服务器即 apache 支持 https 访问

apache 的配置

简单讲就是两步:

  • 开启 SSL 功能,在配置文件中去掉 ; 开启

  • 在 vhost 中添加服务器端证书的路径,实例如下:

    <VirtualHost *:8087>
            DocumentRoot "*****"
            ServerName *****
            SSLEngine on
            SSLCertificateFile "c:/bin/apache/Apache2.4.4/conf/ssl/server.crt"
            SSLCertificateKeyFile "c:/bin/apache/Apache2.4.4/conf/ssl/server.key"
    
            <Directory "*****">
               Options FollowSymLinks
               AllowOverride None
               Order allow,deny
               Allow from all 
            </Directory>
    
            <FilesMatch ".(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
            </FilesMatch>
        </VirtualHost>

为服务器产生证书以及私钥

进入命令行生成服务器的私钥,在当前目录下生成了一个server.key生成签署申请 * 生成签署申请,此时生成签署文件server.csr.

    openssl genrsa -out server.key 1024
    openssl req -new -out server.csr -key server.key -config ../conf/openssl.cnf

为客户端产生证书以及私钥

  • 生成CA私钥,生成ca.key文件 

  • 利用CA的私钥产生CA的自签署证书,此时需要输入一些信息,注意Common Name为服务器域名,如果在本机,为本机IP

  • CA为网站服务器签署证书

    openssl genrsa -out ca.key 1024 
    openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config ../conf/openssl.cnf
    openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ../conf/openssl.cnf 

Error

  • 解决方案如下:

    // 于是在在当前目录创建demoCA,里面创建以下文件,index.txt,serial:serial内容为01,其他为空以及文件夹 newcert.
    [root@test1 tls]# cd ../CA/
    [root@test1 CA]# ls
    certs  crl  newcerts  private
    // 需要有这几个目录,如果没有可以自己新建
    [root@test1 CA]# touch index.txt
    [root@test1 CA]# echo "00"> serial
    [root@test1 CA]# ls
    // 再执行一遍,即可生成server.crt文件 

复制文件并重启

然后将 server.crt,server.key复制到apache的conf文件夹下,重启apache


MEX
81 声望1 粉丝

制心一处。