Apache配置HTTPS的過程小記


 

一、HTTPS的summery,綜述,它的基本原理,掃肓。

http://www.codeceo.com/article/https-knowledge.html

讀過后,就明白https怎么加密的,為什么會保證網絡傳輸的私密性。

 

二、自己生成私鑰、證書,然后應用到apache中。

講解了如何在windows PHPStudy Apache 配置支持HTTPS

http://www.cnblogs.com/best-jobs/p/3298258.html

簡單明了地教你怎么生成證書,並教你在apache上使用它(生成證書分windows和linux,而使用不分)
 
教你怎么自己生成證書,並在windows上的apache使用它
 
以上3篇文章方法很類似,而且 第一篇文章更詳細,把可能出錯的原因也說了
 
 
這篇教你怎么生成證書,隨便看一看。
 
總體來說,流程就是:
先獲得私鑰+證書兩個文件(可以自己生成、可以從CA購買),放到apache的某個目錄;
再配置httpd.conf和httpd-ssl.conf兩個文件,讓apache知道你要開啟SSL驗證,並指明私鑰和證書的位置;
重啟apache即可。
 
三、我沒有自己生成證書,因為phpstudy環境里已經帶有證書和私鑰。
而且自己生成的證書,會被瀏覽器報警。不能真正用,只能用來加密,自己玩玩可以。
而且買個證書也不貴,300多一年或者免費。商用必買。
 
所以,下面只說有了證書(.crt文件)和私鑰(.key文件)以后,我們怎么配到apache里使用。
 
 
四、對apache的配置
1、假設server.crt和server.key兩個文件,已經放到E:\phpStudy\Apache\conf\ssl 下(放到哪里都可以,因為這個位置要寫到httpd-ssl.conf中。)
 
2、修改E:\phpStudy\Apache\conf\extra\httpd-ssl.conf文件,下面只列出要修改的內容
DocumentRoot "D:\allprojects\ttcms\waxs"(這里一定要寫絕對路徑,比如你寫成DocumentRoot "/Apache24/htdocs",它會解釋為E:/Apache24/htdocs)
ServerName www.waxstest.com  //這里配啥,不重要,因為不管你配啥,任何域名都會起作用。好像沒有起到綁定域名的作用。
ErrorLog "E:\phpStudy\Apache\logs\error.log"
TransferLog "E:\phpStudy\Apache\logs\access.log"
SSLCertificateFile "E:\phpStudy\Apache\conf\ssl\server.crt"  //這里就是實際證書的位置
SSLCertificateKeyFile "E:\phpStudy\Apache\conf\ssl\server.key"  //這時就是實際私鑰的位置。
CustomLog "E:\phpStudy\Apache\logs\ssl_request.log" \
 
3、修改E:\phpStudy\Apache\conf\httpd.conf,打開兩行:
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
確保這兩個文件存在 
 
4、重啟apache。如果用phpstudy這種集成環境重啟不成功,只能到dos命令行,運行E:\phpStudy\Apache\bin>httpd
看報錯,一步一步解決。
比如

就是從這里看出要寫絕對路徑的。

最終重啟apache成功。

5、瀏覽器訪問用https即可

 

6、最后說兩句

最難的是對httpd-ssl.conf的配置,

其中這兩行
DocumentRoot "D:\allprojects\ttcms\waxs"
ServerName www.waxstest.com 
我以為跟配置虛擬機vhosts.conf差不多,在vhosts.conf中比如

<VirtualHost *:80>
DocumentRoot "D:\allprojects\ttcms\qinke"
ServerName www.qinketest.com
ServerAlias
<Directory "D:\allprojects\ttcms\qinke">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>

 

其中ServerName的改變,可以綁定特定的域名指向特定的目錄。

 

而在httpd-ssl.conf中,ServerName似乎不起作用,

但DocumentRoot 跟vhosts.conf一樣起作用。有待研究。

 

 

      

 而且https不會影響已經存在的http站點。(也就是https的DocumentRoot 和http的某個DocumentRoot 一樣,那么https和http都可以訪問)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM