青蛙学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:
出现了证书警告,这是因为.crt证书是通过OpenSSL生成的,并没有经过权威CA认证,所以会被ESET认为是不受信任的证书,点击允许并在火狐中设置例外后即可看到如下页面:
说明HTTPS配置成功。