1. 程式人生 > >Apache 配置多個HTTPS站點

Apache 配置多個HTTPS站點

Apache SSL HTTPS

工作中經常會遇到多個站點實現https訪問,並指向同一個網頁,本文將詳解如何在Centos 環境下配置Apache多站點實現HTTPS訪問。

準備工作

OS:CentOS release 6.8 (Final)
Web:Apache

安裝Apache

1、安裝Apache

[root@node1 ~]# yum install httpd -y

2、啟動服務

[root@node1 ~]# service  httpd start
Starting httpd:                                            [  OK  ]
[root@node1 ~]# 

3、修改測試頁面

[root@node1 ~]# cat /var/www/html/index.html 
<h1>
Apache Test Page~
</h1>

4、測試訪問
技術分享圖片

實現HTTPS訪問

1、安裝SSL模塊

[root@node1 ~]# yum install mod_ssl -y

2、檢測

[root@node1 ~]# cd /etc/httpd/modules/
[root@node1 modules]# ll | grep ssl
-rwxr-xr-x 1 root root 181872 Oct 20  2017 mod_ssl.so

3、上傳證書文件
這裏我們可以到各大廠商去申請免費證書,可滿足個人網站的需求,如企業網站,建議購買企業收費證書;

[root@node1 ~]# cd /etc/httpd/
[root@node1 httpd]# mkdir ssl/default
[root@node1 httpd]# cd ssl/default
[root@node1 default]# rz
[root@node1 default]# ll
total 12
-rw-r--r-- 1 root root 1683 Apr 13 22:26 1_root_bundle.crt
-rw-r--r-- 1 root root 2008 Apr 13 22:26 2_domaintest.cn.crt
-rw-r--r-- 1 root root 1678 Apr 13 22:26 3_domaintest.cn.key
[root@node1 default]# 

4、修改配置

[root@node1 ~]# cd /etc/httpd/conf.d/
[root@node1 conf.d]# ls
README  ssl.conf  welcome.conf
[root@node1 conf.d]# vim ssl.conf 
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
    DocumentRoot "/var/www/html"
    ServerName domaintest.cn
    SSLEngine on
    SSLCertificateFile /etc/httpd/ssl/default/2_domaintest.cn.crt
    SSLCertificateKeyFile /etc/httpd/ssl/default/3_domaintest.cn.key
    SSLCertificateChainFile /etc/httpd/ssl/default/1_root_bundle.crt
</VirtualHost>
配置文件參數 說明
LoadModule 加載SSL模塊
Listen 監聽443端口
DocumentRoot 網頁目錄
ServerName 站點域名
SSLEngine on 啟用SSL功能
SSLCertificateFile 證書文件
SSLCertificateKeyFile 私鑰文件
SSLCertificateChainFile 證書鏈文件

5、重啟服務

[root@node1 ~]# httpd -t
Syntax OK

可以先試用httpd -t 檢測一下配置文件是否正確,然後再重啟服務;

[root@node1 ~]# service  httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

6、檢測端口是否監聽

[root@node1 conf.d]# ss -ntl
State      Recv-Q Send-Q       Local Address:Port         Peer Address:Port 
LISTEN     0      128                      *:80                      *:*     
LISTEN     0      128                      *:22                      *:*     
LISTEN     0      100              127.0.0.1:25                      *:*     
LISTEN     0      128                      *:443                     *:*     
[root@node1 conf.d]# 

7、測試訪問

  • 建議使用google瀏覽器進行測試訪問,f12查看,會顯示“This page is secure (valid HTTPS).”,說明證書配置正確;
    技術分享圖片

    配置多個HTTPS站點

    1、上傳證書文件

    [root@node1 ~]# cd /etc/httpd/ssl/
    [root@node1 ssl]# mkdir web
    [root@node1 ssl]# cd web/
    [root@node1 web]# rz

    2、修改配置文件

    LoadModule ssl_module modules/mod_ssl.so
    Listen 443
    NameVirtualHost *:443
    # 第一個虛擬主機
    <VirtualHost *:443>
    DocumentRoot "/var/www/html"
    ServerName domaintest.cn
    SSLEngine on
    SSLCertificateFile /etc/httpd/ssl/default/2_domaintest.cn.crt
    SSLCertificateKeyFile /etc/httpd/ssl/default/3_domaintest.cn.key
    SSLCertificateChainFile /etc/httpd/ssl/default/1_root_bundle.crt
    </VirtualHost>
    #第二個虛擬主機
    <VirtualHost *:443>
    DocumentRoot "/var/www/html"
    ServerName web.domaintest.cn
    SSLEngine on
    SSLCertificateFile /etc/httpd/ssl/web/2_web.domaintest.cn.crt
    SSLCertificateKeyFile /etc/httpd/ssl/web/3_web.domaintest.cn.key
    SSLCertificateChainFile /etc/httpd/ssl/web/1_root_bundle.crt
    </VirtualHost>

    3、重啟服務

    [root@node1 conf.d]# service  httpd restart
    Stopping httpd:                                            [  OK  ]
    Starting httpd:                                            [  OK  ]
    [root@node1 conf.d]# 

    4、測試訪問
    技術分享圖片
    技術分享圖片

到這裏,Apache多站點https就實現了~

Apache 配置多個HTTPS站點