小白指南:CentOs下Apache服務器配置SSL證書

本文介紹如何爲CentOs下Apache服務器上的網站配置SSL證書。包括兩種情況:
1)爲在Apache上運行的網站配置SSL;
2)爲Apache反向代理的Tomcat網站配置SSL。
實現以上兩項後,本文也自然包含了爲Apache下多個VirtualHost分別配置SSL的方法。

Apache如何反向代理Tomcat 參見
小白指南:CentOs下配置Apache 反向代理Tomcat

環境:

服務器:阿里雲CentOs7
Apache version :2.6.4
Tomcat version: 8.5.45

前提

待配置ssl的網站可以正常訪問。

1、購買並申請SSL證書

通過阿里雲SSL證書服務購買並申請免費SSL證書,每個SSL證書對應一個二級域名。我購買了兩個:
www.test.cn:對應Apache上的網站。
level2.test.cn:對應Tomcat上的網站。

下載SSL相關文件下載到本地,是一個壓縮包,包內有三個文件(以www.test.cn爲例):
1234567_www.test.cn.key
1234567_www.test.cn_chain.crt
1234567_www.test.cn_public.crt

2、安裝ssl模塊

默認Apache是沒有安裝SSL模塊的,使用命令安裝:

yum install -y mod_ssl

3、打開443端口

在阿里雲ECS控制檯上配置安全規則組,監聽443端口。

4、上傳ssl文件

服務器 httpd 目錄下新建子目錄ssl:

mkdir ssl

把三個SSL文件上傳到ssl目錄。如何上傳看 這裏第3.2小節。

5、配置www.test.cn的SSL

1)修改ssl.conf文件
vi /etc/httpd/conf.d/ssl.conf

找到下面內容,把 DocumentRootServerName 改成自己網站的對應內容

<VirtualHost _default_:443>
# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html/test"
ServerName www.test.cn:443

繼續向下,找到這三行:修改爲自己的對應文件路徑和名稱。

SSLCertificateFile /etc/httpd/ssl/1234567_www.test.cn_public.crt
……
SSLCertificateKeyFile /etc/httpd/ssl/1234567_www.test.cn.key
……
SSLCertificateChainFile /etc/httpd/ssl/1234567_www.test.cn_chain.crt
……

修改完畢後保存並退出。到此配置就完成了,不過我們可能還希望當用戶用http://訪問網站時,自動跳轉到https訪問。

2)http強制跳轉https

修改vhost-name.conf

vi /etc/httpd/vhost-conf.d/vhost-name.conf

找到:

<VirtualHost *:80>
DocumentRoot /var/www/html/test
ServerName http://www.test.cn
</Virtualhost>
<Directory /var/www/html/test>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

添加三行內容

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]

修改完畢後如下:

<VirtualHost *:80>
DocumentRoot /var/www/html/test
ServerName http://www.test.cn
</Virtualhost>
<Directory /var/www/html/test>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]

</Directory>

保存修改並退出。

重新啓動Apache。瀏覽器輸入www.test.cn可以正常訪問到https://www.test.cn。

6、配置level2.test.cn的SSL

1)上傳文件參見第4步。
2)修改ssl.conf文件
vi /etc/httpd/conf.d/ssl.conf
a. 複製<VirtualHost _default_:443>中的所有內容並在文件末尾粘貼。
:set number
:16,217 copy 218

上面命令功能:顯示行號,把第16到217行復制到第218行。

把複製的<VirtualHost _default_:443>修改爲<VirtualHost *:443>,這將是level2.test.cn的配置內容。

b.找到 DocumentRootServerName :
<VirtualHost *:443>
# General setup for the virtual host, inherited from global configuration
#DocumentRoot "/var/www/html/test"
ServerName level2.test.cn:443

    ProxyPreserveHost On
    ProxyPass /  http://tomcatIp:8080/
    ProxyPassReverse /  http://tomcatIp:8080/
    
    ProxyPreserveHost On
    ProxyPass /project-war-name  http://tomcatIp:8080/project-war-name
    ProxyPassReverse /project-war-name  http://tomcatIp:8080/project-war-name
    ……

修改的內容包括:
註釋DocumentRoot;
修改ServerName 爲level2.test.cn:443;
新增6行內容。

c.繼續向下,找到這三行:修改爲自己的對應文件路徑和名稱。
SSLCertificateFile /etc/httpd/ssl/7654321_level2.test.cn_public.crt
……
SSLCertificateKeyFile /etc/httpd/ssl/7654321_level2.test.cn.key
……
SSLCertificateChainFile /etc/httpd/ssl/7654321_level2.test.cn_chain.crt
……

保存修改並退出。

3)http強制跳轉https

參見5.2),修改完全相同。

重新啓動Apache。
瀏覽器輸入level2.test.cn可以正常訪問https:/level2.test.cn。
瀏覽器輸入level2.test.cn/project-war-name可以正常訪問https:/level2.test.cn/project-war-name。

7、參考文章

https://blog.csdn.net/u010071211/article/details/80106640
https://blog.csdn.net/zy517863543/article/details/82027567
https://www.jb51.net/article/143599.htm

That’s all.Thank you!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章