因业务需求,需要给域名配置SSL加密,从IT部门获取.cert和.key文件后,就开始配置了.
1. 查找apache的ssl模块
ubuntu下,apache的默认模块目录是 /usr/lib/apache2/modules/
$ cd /usr/lib/apache2/modules/ $ ls
确认有"mod_ssl.so"模块后,我们到apache的配置目录,默认是 /etc/apache2
$ cd /etc/apache2 $ ls
找到 apache2.conf
2. 增加mod_ssl.so依赖
$ vim apache2.conf
在最后一行加上
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
保存,退出
3. HTTP的访问配置
打开 sites-enabled/000-default.conf
$ vim sites-enabled/000-default.conf
<VirtualHost *:80> ServerName: safe.example.com #(要绑定的域名) Options FollowSymLinks # 自动将80端口的访问,重定向到https的域名 Redirect permanent / https://safe.example.com # 也可以使用IF-ELSE条件选择来禁止IP访问: # <If "%{HTTP_HOST} == 'safe.example.com'"> # Redirect permanent / https://safe.example.com/ # </If> # <Else> # Order allow,deny # Deny from all # </Else> # 详情参见: https://httpd.apache.org/docs/2.4/expr.html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
4. HTTPS的访问配置
打开 ports.conf
$ vim ports.conf
原内容:
Listen 80 <IfModule ssl_module> Listen 443 </IfModule>
<IfModule ssl_module> Listen 443 <VirtualHost _default_:443> # 此处为网站根目录 DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine On # 证书文件的路径(需要自己申请,或找IT部门的同事要) SSLCertificateFile "./SSL_Cert/safe.example.com.cert" # key文件的路径(需要自己申请,或找IT部门的同事要) SSLCertificateKeyFile "./SSL_Cert/safe.example.com.key" </VirtualHost> </IfModule>
5.启用服务
$ apachectl configtest # 检查apache配置是否正确 $ sudo service apache2 reload # 检查配置正确后,重新加载配置 $ sudo a2enmod ssl # 启用SSL服务 $ sudo service apache2 restart #重启apache
禁用SSL服务是
$ sudo a2dismod ssl
6. 完成
如果配置正确,那么访问:
- http://safe.example.com
- https://safe.example.com
- safe.example.com
都会重定向到 https://safe.example.com