在linux下的apache配置https协议,开启ssl连接

时间:2022-06-01 04:42:51

环境:linux

配置https协议,需要2大步骤:

一、生成服务器证书

  1、安装openssl软件

    yum install -y openssl mod_ssl

  2、生成服务器私匙,生成server.key文件

    openssl genrsa -des3 -out server.key 1024

  3、填写证书信息,生成server.csr文件

    openssl req -new -key server.key -out server.csr

  4、为证书签证,生成server.crt文件

    openssl x509 -req -days 700 -in server.csr -signkey server.key -out server.crt

  5、移动生成的server.key文件,server.crt文件移到Apache的conf目录下

二、修改配置文件

  1、修改httpd.conf文件,去掉下面两行代码的注释

    LoadModule ssl_module modules/mod_ssl.so
    Include conf/extra/httpd-ssl.conf

  2、修改httpd-ssl.conf文件,增加下面这些代码

    <VirtualHost 192.169.20.1:443>                               ------配置虚拟主机
            DocumentRoot /apache/htdoc                            ------要与httpd.conf的DocumentRoot的文件路一样
            ServerName www.xxoo.com                              -------在浏览器里输入的域名
            SSLEngine on                  -------开启ssl连接
            SSLCertificateFile /etc/httpd/conf/server.crt     ------与第一大步骤的第5小步骤的文件路径对应
            SSLCertificateKeyFile /etc/httpd/conf/server.key    ------与第一大步骤的第5小步骤的文件路径对应
    </VirtualHost>

  3、把httpd-ssl.conf文件中所有的apache的路径替换为当前安装的APACHE的路径(挺重要的)

  4、修改httpd-ssl.conf的代码

    SSLMutex  "/usr/local/Apache2/logs/ssl_mutex"

    改成

    SSLMutex default

完成以上两个步骤后,重启Apache服务器。这时会要求输入密码(生成server.key时的密码)。最坑的是,密码输入正确了,但apache还是没开启,这个问题可以这样解决:问题解决,照做以下步骤即可:

  cp server.key server.key.tmp

  openssl rsa -in server.key.tmp -out server.key   --------  这时会要求你输入密码,输入生成server.key时的密码时就行

好了,现在重启apache就不会有输入密码的提示了。(其实,是清空了密码)。现在在浏览器输入:  https://www.xxoo.com。就会出现跟http协议不一样的神奇页面了