青蛙学Linux—Apache提供HTTPS服务

关于HTTPS及SSL证书的知识可参考https://www.cnblogs.com/yu2006070-01/p/10233470.html

实验环境:

  • 操作系统CentOS 7.6.1810,IP地址为192.168.0.110
  • Apache版本2.4.38,安装路径为/usr/local/httpd
  • 证书文件放置在Apache安装目录下的keys目录(新建)
  • 证书对应域名为www.abc.com
  • 虚拟主机域名为www.abc.com,网站根目录为/data/www.abc.com

1、使用OpenSSL生成证书文件

网站部署HTTPS需要.crt和.key两个证书文件,这里直接通过OpenSSL生成这两个证书文件:

[root@localhost keys]# openssl req -new -newkey rsa:2048 -sha256 -nodes -x509 -days 365 -out abc.crt -keyout abc.key -subj '/C=CN/ST=fujian/L=fuzhou/O=abc Inc./OU=Web/CN=abc.com'

命令运行完成后将会在当前目录下生成abc.crt和abc.key两个证书文件。

2、Apache配置HTTPS

2.1、打开SSL模块

在Apache主配置文件httpd.conf中找到以下配置并取消注释:

LoadModule ssl_module modules/mod_ssl.so

2.2、配置SSL

SSL配置文件为Apache的子配置文件httpd-ssl.conf,所以需要在住配置文件httpd.conf中Include进来:

# 取消以下配置的注释
Include conf/extra/httpd-ssl.conf

在httpd-ssl.conf中修改以下配置:

# 修改加密套件
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4
SSLProxyCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4

# 添加SSL协议,如果无需兼容老的应用可以取消SSLv3
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLProxyProtocol all -SSLv3 -TLSv1 -TLSv1.1

2.3、配置基于HTTPS的虚拟主机

注意:基于HTTPS的虚拟主机也是在httpd-ssl.conf文件中进行配置,而不是httpd-vhost.conf文件。

虚拟主机部分主要配置内容如下:

<VirtualHost _default_:443>
DocumentRoot "/data/www.abc.com"
ServerName www.abc.com:443
ServerAdmin xxx
ErrorLog "/usr/local/httpd/logs/ssl_abc.com_error_log"
TransferLog "/usr/local/httpd/logs/ssl_abc.com_access_log"
SSLEngine on
SSLCertificateFile "/usr/local/httpd/keys/abc.crt"
SSLCertificateKeyFile "/usr/local/httpd/keys/abc.key"
CustomLog "/usr/local/httpd/logs/ssl_abc.com_request_log" 
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
<Directory "/data/www.abc.com">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
</VirtualHost>

2.4、报错解决

完成以上配置后,重启Apache,遇到以下错误:

AH00526: Syntax error on line 92 of /usr/local/httpd/conf/extra/httpd-ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).

此时修改Apache主配置文件httpd.conf,取消以下配置的注释:

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

修改完成后Apache即可正常启动。

2.5、验证配置

在虚拟主机www.abc.com的根目录/data/www.abc.com下有一个名为index.html的文件,内容如下:

<h3>SSL it works!</h3>

此时访问https://www.abc.com:

7

出现了证书警告,这是因为.crt证书是通过OpenSSL生成的,并没有经过权威CA认证,所以会被ESET认为是不受信任的证书,点击允许并在火狐中设置例外后即可看到如下页面:

8

说明HTTPS配置成功。

原文地址:https://www.cnblogs.com/yu2006070-01/p/10320153.html