阿里云HTTPS網(wǎng)站配置和apache的主httpd.conf文件詳解

配置HTTPS

一、SSL證書申請:

如果是阿里云可以申請免費(fèi)證書:
如果不是阿里云:

二、開通證書:購買位置:打開阿里云找到“產(chǎn)品”-“安全”-“CA證書服務(wù)”-點(diǎn)擊“立即購買”;

選擇方法:證書類型選擇”專業(yè)版OV SSL”->”1個域名”->”Symantec”(這里選擇完成后上面證書類型出現(xiàn)了“免費(fèi)型DV SSL”)->證書類型選擇”免費(fèi)型DV SSL”->然后繼續(xù)購買就可以了;
此處注意不要填xxx.xxx的形式, 因?yàn)檫@種證書只能綁定一個域名

域名驗(yàn)證類型:一路點(diǎn)擊后來到后臺中的CA證書服務(wù)(也可以自己從阿里后臺找),在”進(jìn)度”欄目中有”補(bǔ)全”,點(diǎn)擊”補(bǔ)全”,一直輸入一直往下點(diǎn)擊,直到有個”域名驗(yàn)證類型”,這里選擇DNS。

全部填寫完成后等待一會就開通了。

DNS解析配置:緊接上步,開通成功會有要求添加txt的解析記錄,解析記錄的值也會給你,然后去添加

三、部署服務(wù)器:

由于我的環(huán)境是apache, 這里主要是有關(guān)apche的配置項nignx的參考

第一 、php開啟php-openssl拓展

如果沒開啟的話, 如果是yum方式安裝的apache, 則運(yùn)行yum install mod_ssl

第二、

一、進(jìn)入到apache目錄下在conf 文件夾下 httpd.conf中找到
LoadModule ssl_module modules/mod_ssl.so
去掉前面的注釋符,使得ssl模塊生效(如果該模塊已去掉注釋,請不用操作)。

如果重啟用status查看得知mod_ssl.so無法加載, 并且是通過安裝包方式安裝的apache需要t通過以下方法加入該模塊:
如果是通過yum方式安裝的httpd, 則只需要執(zhí)行 yum install mod_ssl

1、根據(jù)服務(wù)器apache版本下載對應(yīng)版本:apache歷史版本下下載
2、解壓下載的版本文件 將modules下的loggers,ssl兩個文件【一定是兩個文件否則出錯】放到服務(wù)器端apache的modules下
3、執(zhí)行 /usr/bin/apxs -a -i -c mod_ssl.c (/usr/bin/apxs為find出來的apxs路徑)
apxs是一個apache模塊安裝工具
4、如果出現(xiàn)錯誤:
In file included from mod_ssl.c:27:0:
ssl_private.h:85:30: fatal error: openssl/opensslv.h: No such file or directory

5、則要先sudo yum install openssl-devel

6、再次執(zhí)行/usr/bin/apxs -a -i -c mod_ssl.c 發(fā)現(xiàn)已經(jīng)生成mod_ssl.so文件

如果到第6步, so文件生成了但是還是無法加載, 則執(zhí)行yum install mod_ssl

二、在加載虛擬域名的配置文件下增加加載hosts_ssl.conf的配置文件,如果已有則去掉注銷#
<IfModule ssl_module>
Include conf/http_ssl.conf
</IfModule>
(也有版本是在文件ssl.load文件中對模塊進(jìn)行管理)

第三,在apche安裝目錄新增cert文件夾放入在阿里云申請成功并下載下來的證書文件。
第四、配置http_ssl.conf文件

阿里云推薦配置:

 打開 apache 安裝目錄下 conf/extra/httpd-ssl.conf 文件 (也可能是conf.d/ssl.conf,與操作系統(tǒng)及安裝方式有關(guān)), 在配置文件中查找以下配置語句:
# 添加 SSL 協(xié)議支持協(xié)議,去掉不安全的協(xié)議
SSLProtocol all -SSLv2 -SSLv3
# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 證書公鑰配置
SSLCertificateFile cert/public.pem
# 證書私鑰配置
SSLCertificateKeyFile cert/215016420810269.key
# 證書鏈配置,如果該屬性開頭有 '#'字符,請刪除掉
SSLCertificateChainFile cert/chain.pem

自己的VirtualHost 節(jié)點(diǎn)需要額外實(shí)現(xiàn):

<VirtualHost [服務(wù)器ip]:443>
    ServerAdmin your.com      
    ServerName your.com                    
    DocumentRoot  /data/www/hbappserver/public          
    SSLEngine on
    # 添加 SSL 協(xié)議支持協(xié)議,去掉不安全的協(xié)議
    SSLProtocol all -SSLv2 -SSLv3
    # 修改加密套件如下
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
    SSLHonorCipherOrder on
    # 證書公鑰配置
    SSLCertificateFile cert/public.pem
    # 證書私鑰配置
    SSLCertificateKeyFile cert/215013163210269.key(拿到的key)
    # 證書鏈配置,如果該屬性開頭有 '#'字符,請刪除掉
    SSLCertificateChainFile cert/chain.pem
</VirtualHost>
第五、重要!!!!!配置httpd-vhosts.conf文件

除了在http_ssl.conf中增加域名節(jié)點(diǎn)外,原有虛擬域名配置文件httpd-vhosts.conf也要增加結(jié)點(diǎn)否則httpds不會生效,我看大部分參考資料都沒有這一步,可能環(huán)境不同吧, 我這里是LAMP且yum源安裝。

<VirtualHost *:443>
    ServerAdmin your.com      
    ServerName your.com                    
    DocumentRoot  /data/www/hbappserver/public          
    SSLEngine on
    # 添加 SSL 協(xié)議支持協(xié)議,去掉不安全的協(xié)議
    SSLProtocol all -SSLv2 -SSLv3
    # 修改加密套件如下
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
    SSLHonorCipherOrder on
    # 證書公鑰配置
    SSLCertificateFile cert/public.pem
    # 證書私鑰配置
    SSLCertificateKeyFile cert/215013163210269.key(拿到的key)
    # 證書鏈配置,如果該屬性開頭有 '#'字符,請刪除掉
    SSLCertificateChainFile cert/chain.pem
</VirtualHost>
第六:在阿里云服務(wù)器中安全組設(shè)置中開放服務(wù)器的443端口,選擇開放類型為https
第七:重啟apache

注意事項:

1、阿里云申請域名是,是填一個頂級域名和子域名, 填xxx.xxx.xxx的格式(只能保護(hù)一個域名)
2、apche的httpd.conf文件中如果沒有mod_ssl模塊, 要額外運(yùn)行yum安裝mod_ssl模塊,
這樣它就會生成mod_ssl.so和httpd-ssl.conf文件了
3、同理如果第二步找不httpd-ssl.conf,在運(yùn)行完安裝mod_ssl后直接把Include conf/hosts_ssl.conf加最后一行
4、阿里云建議的apache設(shè)置并不對
記得在hosts_ssl.conf文件中設(shè)置本服務(wù)ip和ServerName設(shè)置域名(與申請ssl時所填一致)。
并且除了在VirtualHost外的設(shè)置項
SSLProtocol SSLCipherSuite SSLHonorCipherOrder 這幾項也在VirtualHost 中需要加入。
5、配置http.conf文件時,需要清除它的加載原理,參考如下


Apache主配置文件httpd.conf 詳解:

Apache服務(wù)器的配置信息全部存儲在主配置文件/etc/httpd/conf/httpd.conf中,這個文件中的內(nèi)容非常多,用wc命令統(tǒng)計一共有1009行,其中大部分是以#開頭的注釋行。
一般, 如果你centos通過yum源安裝一般是在 /etc/httpd/conf/httpd.conf 目錄下,,有些系統(tǒng)的鏡像也安裝在apache目錄下 ,具體可以通過find / -name命令查找。

配置文件包括三部分:

Section 1: Global Environment 服務(wù)器參數(shù)和加載模塊設(shè)置

Listen 80 端口 如有多塊網(wǎng)卡,默認(rèn)監(jiān)聽所有網(wǎng)卡

StartServers 8 開始服務(wù)時啟動8個進(jìn)程

MinSpareServers 5 限制同一時刻客戶端的最大連接請求數(shù)量超過的要進(jìn)入等候隊列

MaxSpareServers 20 每個進(jìn)程生存期內(nèi)允許服務(wù)的最大請求數(shù)量,0表示永不結(jié)束

ServerLimit 256 服務(wù)器允許配置進(jìn)程數(shù)的上限。

MaxClients 256 同時最多能發(fā)起250個訪問,
User apache
Group apache

啟動服務(wù)后轉(zhuǎn)換的身份,在啟動服務(wù)時通常以root身份,然后轉(zhuǎn)換身份,這樣增加系統(tǒng)安全

DocumentRoot

網(wǎng)站文件根目錄和對根目錄的一個權(quán)限的設(shè)置

DocumentRoot "/var/www/html"
 317 <Directory "/var/www/html"> 
 331    Options Indexes FollowSymLinks   當(dāng)網(wǎng)頁不存在的時候允許索引顯示目錄中的文件,
 338    AllowOverride None 是否允許訪問符號鏈接文件。
 343    Order allow,deny  表示不允許這個目錄下的訪問控制文件來改變這里的配置
 344    Allow from all 對頁面的訪問控制順序
 346 </Directory>
網(wǎng)頁支持:
AddType application/x-tar .tgz 支持的應(yīng)用如果想支持對`php`的解析添加這樣一行

AddType text/html .shtml 

AddOutputFilter INCLUDES .shtml
添加動態(tài)處理類型為server-parsed由服務(wù)器預(yù)先分析網(wǎng)頁內(nèi)的標(biāo)記,將標(biāo)記改為正確的HTML標(biāo)識

添加動態(tài)處理類型為server-parsed由服務(wù)器預(yù)先分析網(wǎng)頁內(nèi)的標(biāo)記,將標(biāo)記改為正確的HTML標(biāo)識

ServerName

默認(rèn)是不需要指定的,服務(wù)器通過名字解析過程來獲得自己的名字,但如果解析有問題(如反向解析不正確),或者沒有DNS名字,也可以在這里指定IP地址,當(dāng)這項不正確的時候服務(wù)器不能正常啟動。前面啟動Apache時候提示正在啟動 httpd:httpd: apr_sockaddr_info_get() failed forjustin httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1forServerName,解決方法就是啟動該項把www.example.com:80修改為自己的域名或者直接修改為localhost

服務(wù)器模塊加載

注意以下幾個模塊,涉及到httpd服務(wù)器能否正確跑起來
LoadModule dir_module modules/mod_dir.so
LoadModule systemd_module modules/mod_systemd.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so


Section 2: 'Main' server configuration

-主服務(wù)配置,相當(dāng)于是Apache中的默認(rèn)Web站點(diǎn),如果我們的服務(wù)器中只有一個站點(diǎn),那么就只需在這里配置就可以了。
一般服務(wù)器這部分的配置可以省略


Section 3: Virtual Hosts []

虛擬主機(jī)不能與Main Server主服務(wù)器共存,當(dāng)啟用了虛擬主機(jī)之后,Main Server就不能使用了。

Virtual Hosts文件加載:

vhost_alias_module(引入mod_vhost_alias.so)模塊加載時允許配置一個http的虛擬主機(jī)文件(httpd-vhost.conf),
ssl_module(引入mod_ssl.so)模塊加載時允許配置一個https的虛擬主機(jī)文件包括http域名的虛擬主機(jī)httpd-sll.conf
在以上兩個文件,都通過添加類似:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias example.com
    DocumentRoot /data/www/Shop
</VirtualHost>

<VirtualHost *:443>
#   https需要額外配置證書信息
DocumentRoot "/data/www/public"
ServerName example.com
ErrorLog "/usr/local/apache/logs/error_log"
TransferLog "/usr/local/apache/logs/access_log"
#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on 
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLCertificateFile cert/public.pem

SSLCertificateKeyFile cert/215016596360269.key

SSLCertificateChainFile cert/chain.pem

的結(jié)點(diǎn)來配置虛擬域名,重啟生效。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容