如何在CentOS配置Apache的HTTPS服務

來源:互聯網
上載者:User

標籤:終端   提交   ase   調整   parameter   虛擬機器主機   嗅探   name   參考   

Web伺服器在預設情況下使用HTTP,這是一個純文字的協議。正如其名稱所暗示的,純文字協議不會對傳輸中的資料進行任何形式的加密。而基於HTTP的Web伺服器是非常容易配置,它在安全方面有重大缺陷。任何"中間人",通過精心防止的資料包嗅探器,是能夠看到任何經過的資料包內容。更進一步,惡意使用者甚至可以在傳輸路徑設定一個假冒的WEB伺服器冒名頂替實際的目標Web伺服器。在這種情況下,終端使用者可能實際上與假冒者伺服器,而不是真正的目的伺服器進行通訊。這樣,惡意使用者可以通過精心設計的表單欺騙終端使用者擷取到敏感資訊,如使用者名稱密碼。

為了處理這些類型的漏洞,大多數供應商往往在他們的web伺服器應用HTTPS協議。對於唯讀類型的網站,使用者只能讀取內容,並沒有實際提交任何資訊,HTTP仍然是一個可行的選擇。但是,對於儲存敏感資訊的網站,比如:使用者需要登入來獲得網站的服務,那麼HTTPS是必須的。 HTTPS能夠為一個網站提供以下能力。

  • 確保所有經過伺服器傳輸的資料包都是經過加密的。

  • 建立了一個官方數位憑證認證,使得假冒伺服器無法冒充真正的伺服器。

需要建立支援HTTPS的WEB伺服器所要做的第一件事就是獲得數位憑證。數位憑證可以在以下任一方法來獲得。

  1. 自我簽署憑證被推薦用於測試目的和個人項目。自我簽署憑證,也可以用於服務提供者,不過一般適用於使用者互相信任的情形。另外,自我簽署憑證不用花錢購買。

  2. 認證可以由社區為基礎的認證供應商如StartSSL和CACERT辦法。這些認證也不需要花錢,但建議為個人項目。

  3. 對於全球性商業網站,建議從值得信賴的知名憑證授權單位購買認證。這些認證需要花錢,但他們增加了網路服務供應商的信譽。

準備

在這篇文檔中,我們將使用自我簽署憑證。假設CentOS已經安裝了Apache Web伺服器。我們需要使用OpenSSL產生自我簽署憑證。如果尚未安裝OpenSSL,它可以使用yum來安裝。

# yum install mod_ssl openssl
產生一個自我簽署憑證

下面的命令可以被用來產生一個自簽名的認證。首先,產生2048位的加密私密金鑰。

# openssl genrsa -out ca.key 2048

然後產生認證簽章要求(CSR)。

# openssl req -new -key ca.key -out ca.csr

最後,組建類型為X509的自我簽署憑證。

# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

建立認證後,將檔案複製到對應的目錄。

# cp ca.crt /etc/pki/tls/certs/# cp ca.key /etc/pki/tls/private/# cp ca.csr /etc/pki/tls/private/
配置Apache Web伺服器

首先,修改下面的設定檔。

# vim /etc/httpd/conf.d/ssl.conf
### overwrite the following parameters ###SSLCertificateFile /etc/pki/tls/certs/ca.crtSSLCertificateKeyFile /etc/pki/tls/private/ca.key### The following parameter does not need to be modified in case of a self-signed certificate. ###### If you are using a real certificate, you may receive a certificate bundle. The bundle is added using the following parameters ###SSLCertificateChainFile /etc/pki/tls/certs/example.com.ca-bundle

然後重新啟動httpd服務使更改生效。

# service httpd restart

Web伺服器現在可以使用HTTPS了!

調整虛擬機器主機

Apache Web伺服器可以配置為多個Web網站。這些網站在httpd的設定檔中以虛擬機器主機的形式定義。例如,讓我們假設我們的Apache Web伺服器託管網站為virtual-web.example.com,網站所有的檔案都儲存在/var/www/html/virtual-web目錄。
對於虛擬機器主機,典型的HTTP配置是這樣的。

# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80<VirtualHost *:80>    ServerAdmin [email protected].com    DocumentRoot /var/www/html/virtual-web    ServerName virtual-web.example.com</VirtualHost>

我們可以參考上面的配置建立HTTPS虛擬機器主機。

# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:443<VirtualHost *:443>    SSLEngine on    SSLCertificateFile /etc/pki/tls/certs/ca.crt    SSLCertificateKeyFile /etc/pki/tls/private/ca.key    <Directory /var/www/html/virtual-web>        AllowOverride All    </Directory>    ServerAdmin [email protected].comDocumentRoot /var/www/html/virtual-webServerName virtual-web.example.com</VirtualHost>

需要按照上面的配置,定義每個虛擬機器主機。添加虛擬機器主機後,重新啟動Web服務。

# service httpd restart

現在的虛擬機器主機就可以使用HTTPS了!

可選的配置:強制Apache Web伺服器始終使用https

如果由於某種原因,你需要網站的Web伺服器僅使用HTTPS,您需要將所有HTTP請求(連接埠80)重新導向到HTTPS(連接埠443)。 Apache Web伺服器可以容易地做到這一點。

1,強制主站使用

如果要強制主站使用HTTPS,我們可以這樣修改httpd設定檔:

# vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80Redirect permanent / https://www.example.com
# service httpd restart

2,強制虛擬機器主機

如果要強制在虛擬機器主機上使用HTTPS,對於HTTP可以按照下面進行配置:

# vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>    ServerName virtual-web.example.com    Redirect permanent / https://virtual-web.example.com/</VirtualHost>
# service httpd restart

綜上所述,當存在如使用者登入等互動時HTTPS總是推薦的方式,可以提高伺服器的安全性。認證可以通過各種方式獲得,如:自簽名、社區提供的甚至商業機構夠哦買的。管理員應當謹慎選擇將要使用的認證的類型。

如何在CentOS配置Apache的HTTPS服務

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.