摘? 要:網(wǎng)站發(fā)布中HTTP訪問網(wǎng)站的安全性能不高,無法保證數(shù)據(jù)傳輸?shù)陌踩?,更多的網(wǎng)站采用HTTPS訪問網(wǎng)頁,使用Apache服務(wù)器中提供的mod_ssl模塊,文章提出了一種強加密方式,通過自制證書實現(xiàn)身份認證,可以有效防止目前的網(wǎng)站發(fā)布時出現(xiàn)數(shù)據(jù)泄漏或劫持等安全問題,確保數(shù)據(jù)在網(wǎng)絡(luò)中傳輸?shù)恼_性,從而提高發(fā)布網(wǎng)站的安全性。
關(guān)鍵詞:HTTPS;證書;SSL;Apache
中圖分類號:TP309.7? ? ? 文獻標(biāo)識碼:A 文章編號:2096-4706(2020)17-0136-03
Abstract:In the process of browsing published webpage,the security performance of using HTTP to access webpage is not high,and the security of data transmission can not be guaranteed. In order to improve security,more webpage use HTTPS to access webpage. And mod_ssl module provided by Apache server is used,this paper proposes a strong encryption method by using self-made certificate to realize identity authentication,it can effectively prevent the security problems such as data leakage or hijacking when the current website is published,ensure the correctness of data transmission in the network,and thus improve the security of the published webpage.
Keywords:HTTPS;certificate;SSL;Apache
0? 引? 言
Apache HTTP服務(wù)器模塊mod_ssl提供了與OpenSSL的接口,它使用安全套接字層和傳輸層安全協(xié)議(SSL/TLS)提供了強加密。使用mod_ssl模塊之后,Apache可以支持HTTPS協(xié)議,可以基于SSL/TLS通過服務(wù)器證書實現(xiàn)對HTTP協(xié)議的加密,并且可以通過用戶證書實現(xiàn)身份認證。在傳輸層上,為了確保服務(wù)器上的數(shù)據(jù)傳輸?shù)挠行?、正確性,防止中間節(jié)點的信息獲取、信息泄漏等,通過HTTPS加密和SSL認證機制提供的數(shù)據(jù)傳輸加密相結(jié)合,在傳輸過程中保證了數(shù)據(jù)的完整性,并增加了服務(wù)器身份認證功能這種強加密方式,有效防止了目前常見的安全事件的發(fā)生,例如數(shù)據(jù)泄漏、流量劫持、釣魚網(wǎng)站欺詐事件等。
由于一般書籍沒有給出自制證書的操作方法,本文根據(jù)作者多年從事Linux網(wǎng)絡(luò)服務(wù)器教學(xué)的研究和實踐,從實驗的角度介紹了證書在網(wǎng)絡(luò)中實現(xiàn)認證的原理和自制證書的關(guān)鍵技術(shù)。
1? 加密網(wǎng)站與非加密網(wǎng)站
1.1? 加密網(wǎng)站和非加密網(wǎng)站的說明
以明碼傳送數(shù)據(jù)的HTTP所建立的網(wǎng)站屬于非加密網(wǎng)站,采用明碼傳輸?shù)臄?shù)據(jù)安全性無法得到保障,而HTTPS才是加密傳輸。在Apache服務(wù)器上建立網(wǎng)站的加密方法可以通過SSL加密實現(xiàn),SSL具備了保護信息的保密性、完整性、不可否認性等安全特征,從而保證了主機之間的通信免遭竊聽、篡改和偽造。網(wǎng)站頁面沒有HTTPS會增加頁面會話劫持的風(fēng)險,特別是在公共的未加密的網(wǎng)絡(luò)連接下。HTTPS對網(wǎng)站速度并沒有明顯的影響,甚至速度會更快,另外,還可以通過升級處理器來處理SSL加密的額外工作。
1.2? 配置Apache基于域名的SSL虛擬主機
一般的,一個證書DN(Distinguished Name)中包含一個唯一的CN(Common Name),當(dāng)證書CN與Apache所配置的SSL虛擬主機域名一致時,才能訪問此虛擬主機。在HTTPS協(xié)議流過程中,服務(wù)器首先要與客戶端之間進行服務(wù)器驗證并協(xié)議安全會話,然后客戶端向服務(wù)器發(fā)送HTTP請求。因此,在客戶端開始發(fā)送HTTP請求之前,服務(wù)器就已經(jīng)把證書發(fā)給了客戶端,若SSL協(xié)商之后客戶端發(fā)送的host:請求頭中的域名與SSL協(xié)商過程發(fā)來的證書CN一致,則基于該域名的HTTPS站點可被訪問,否則不能被訪問。要實現(xiàn)讓Apache支持HTTPS協(xié)議,必須要有mod_ssl模塊,以下是安裝mod_ssl模塊操作命令。
[root@localhost ~]# yum install mod_ssl? #安裝mod_ssl模塊
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
正在解決依賴關(guān)系
--> 正在檢查事務(wù)
---> 軟件包 mod_ssl.x86_64.1.2.4.6-93.el7.centos 將被 安裝
以IP地址10.0.2.15,默認的本地域名為例,如圖1所示,默認的證書安裝好后,在第一次啟動時,打開網(wǎng)站會出現(xiàn)一個證書文件配置,默認的證書有效期限是1年。這就是默認的SSL網(wǎng)站,你的重要信息可以放在這里,讓數(shù)據(jù)在網(wǎng)絡(luò)上傳輸?shù)酶影踩?。圖2為未進行加密的使用HTTP訪問的網(wǎng)站,提示連接不安全。
2? 建立自制證書的HTTPS
2.1? 建立證書文件
默認的證書雖然可以讓你順利使用HTTPS,但只有1年的有效時間,為此我們可以自制證書,這個證書的制作僅用私有www網(wǎng)站的用途,沒有去CA認證(Certificate Authority)注冊。下面操作是以IP地址10.0.2.15,更改域名www.example.com為例實現(xiàn)自制證書的流程步驟:
(1)首先要建立一把PrivateKey預(yù)備提供給SSL證書簽章要求所用。先到/etc/pki/TLS/certs/中去建立一把Apache使用的私鑰文件。
[root@localhost ~]# cd /etc/pki/tls/certs? #在此目錄下建立一把Apache使用的私鑰文件
[root@localhost certs]# make testcal.key? #編譯私鑰文件
umask 77 ; \
/usr/bin/openssl genrsa -aes128 2048 > testcal.key
Generating RSA private key, 2048 bit long modulus
...................................+++
...+++
e is 65537 (0x10001)
Enter pass phrase:? ? ? ? ? ? ? ? ? ? ? #設(shè)置私鑰密碼
Verifying - Enter pass phrase:? ? ? ? ? ? ?#確認二次輸入私鑰密碼
[root@localhost certs]#
(2)其次,將剛剛建立的文件中的密碼取消掉,不要有密碼存在。
[root@localhost certs]# mv testcal.key testal.key.raw
[root@localhost certs]# openssl rsa -in testal.key.raw -out testcal.key
Enter pass phrase for testal.key.raw:? ? ? ? ? #輸入配置的之前私鑰密碼
writing RSA key
[root@localhost certs]# rm -f testal.key.raw? ? #刪除舊密鑰文件
[root@localhost certs]# chmod 400 testcal.key? #設(shè)置密鑰權(quán)限為400,且一定要為400
(3)SSL自制證書,建立所需要的最終證書文件。
[root@localhost certs]# make testcal.crt serial=2020090701? ?#建立證書生效起始時間序列好
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key testcal.key -x509 -days 365 -out testcal.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN? ? ? ? ? ? ? ? ?#國家名縮寫
State or Province Name (full name) []:SICHUAN? ? ? ? ?#省市名
Locality Name (eg, city) [Default City]:SICHUAN
Organization Name (eg, company) [Default Company Ltd]:KSU# 證書發(fā)布的組織
Organizational Unit Name (eg, section) []:DIC? ? ? ? ? ? ? #證書發(fā)布的組織單位
Common Name (eg, your name or your server's hostname) []:www.example.com? #服務(wù)器的主機名,這個是關(guān)鍵,需要填寫正確的主機名否則不能訪問
Email Address []:xxhm97@qq.com? ?#郵件地址
這樣,CA證書制作完成。在keys目錄下,名字就叫testcal.crt;CA的私鑰是testcal.key,可以使用ll命令查看證書。
[root@localhost certs]# ll testcal*? #查看設(shè)置的證書
-rw-------. 1 root root 1403 9月? 14 09:43 testcal.crt? #最終的證書文件
-r--------. 1 root root 1675 9月? 14 09:36 testcal.key? #系統(tǒng)私鑰文件
2.2? 修改SSL.conf使用自制證書
當(dāng)建立好證書文件后,如果你想要修改證書年限,修改certs目錄下的makefile里面的內(nèi)容,把365天改大,例如改成3 000天,需要處理SSL.conf的內(nèi)容。
[root@localhost certs]# vim /etc/HTTPd/conf.d/SSL.conf
將語句:
SSLCertificateFile /etc/pki/TLS/certs/localhost.crt
修改為:
SSLCertificateFile /etc/pki/TLS/certs/testca.crt
將語句:
SSLCertificateKeyFile /etc/pki/TLS/private/localhost.key
修改為:
SSLCertificateKeyFile /etc/pki/TLS/certs/testca.key
保存后,重啟Apache服務(wù)器,然后使用HTTPS://的網(wǎng)址,就能查閱剛建立的證書數(shù)據(jù),在查閱前,需將緩存內(nèi)容清除,保證新的證書的顯示內(nèi)容如圖3所示。
2.3? 將加密首頁和非加密首頁相分離
雖然加密首頁和非加密首頁是相同的,用戶在使用時認為沒什么區(qū)別,但作為網(wǎng)頁的發(fā)布方,為了數(shù)據(jù)的安全性,可以強制用戶使用HTTPS://IP地址這種方式查閱重要的數(shù)據(jù)。在SSL模塊中默認提供此功能,只要將HTTP://與HTTPS://的首頁分離即可。我們所要做的是在一般明碼傳輸網(wǎng)頁首頁不變更的情況下,把HTTPS://的首頁放置在/var/www/HTTPS/目錄下,另外將SSL.conf內(nèi)容中的documentroot項修改成“/var/www/HTTPS”即可。已加密的安全連接的HTTPS網(wǎng)頁測試頁面如圖4所示。
3? 結(jié)? 論
在Windows環(huán)境下或者在Linux圖形環(huán)境下,不管使用何種瀏覽器,由于證書是自簽名證書,都會顯示證書不可信信息;在測試環(huán)境中,可以添加對此證書的額外信任從而瀏覽站點內(nèi)容。通過自制證書的解決策略,可以了解加密網(wǎng)站的生成方式,對發(fā)布和管理網(wǎng)站起到一定的作用。為了保證各企業(yè)數(shù)據(jù)信息通過網(wǎng)站安全地接入互聯(lián)網(wǎng),在防護措施上可以考慮使用HTTPS和SSL加密保護方式發(fā)布網(wǎng)頁,完善對用戶重要的數(shù)據(jù)平臺、網(wǎng)站等,保障用戶隱私數(shù)據(jù)。
參考文獻:
[1] 梁如軍,王宇昕,車亞軍,等.Linux基礎(chǔ)及應(yīng)用教程(基于CentOS7):第2版 [M].北京:機械工業(yè)出版社,2016.
[2] 鳥哥.鳥哥的Linux私房菜:服務(wù)器架設(shè)篇:第3版 [M].北京:機械工業(yè)出版社,2012.
[3] 楊云,馬立新.網(wǎng)絡(luò)服務(wù)器搭建、配置與管理——Linux版 [M].北京:人民郵電出版社,2011.
[4] 余柏山.Linux系統(tǒng)管理與網(wǎng)絡(luò)管理:第2版 [M].北京:清華大學(xué)出版社,2014.
[5] 賈鐵軍,蔣建軍.網(wǎng)絡(luò)安全技術(shù)及應(yīng)用實踐教程:第3版 [M].北京:機械工業(yè)出版社,2018.
[6] 何玲.SSL VPN系統(tǒng)的研究及在校園網(wǎng)中的應(yīng)用 [D].天津:天津大學(xué),2007.
作者簡介:徐紅梅(1977—),女,漢族,北京人,副教授,碩士,研究方向:網(wǎng)絡(luò)技術(shù)。