TShopping

 找回密碼
 註冊
搜索
查看: 695|回復: 0

[教學] CentOS 設置一個SSL 加密的網頁服務器

[複製鏈接]
發表於 2014-11-17 16:31:48 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
這個指引會解釋如何設置一個支持https 的網站。這個教程使用一個自我簽署的金鑰,因此它適用於個人網站或作測試用途。這個指引並未經修訂,因此請自行承擔風險,並進行備份!

1. 取得所需的軟件
你需要為一台SSL 加密的網頁服務器預備數件東西。視乎你的安裝,你可能並未安裝OpenSSL 或mod_ssl,Apache 連接到OpenSSL 的界面。如果你有需要,請用yum 來安裝它們。
  1. yum install mod_ssl openssl
複製代碼
yum 會告訴你它們已經安裝,或者為你安裝它們。

2. 產生一張自我簽署的憑證
我們將會利用OpenSSL 來產生一張自我簽署的憑證。如果你在一台生產用的服務器上做這個動作,你應該會想從一個被信賴的憑證機構取得一條金鑰,但假若你只是用在一個私人網站上或作測試之用,自我簽署的憑證已經足夠了。要創建金鑰,你必須是root 用戶,因此你可使用su 變為root 用戶,或在指令前面運用sudo
# 產生私鑰
  1. openssl genrsa -out ca.key 2048
複製代碼
# 產生CSR
  1. openssl req -new -key ca.key -out ca.csr
複製代碼
# 產生自我簽署的金鑰
  1. openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
複製代碼
# 複製文件至正確位置
  1. cp ca.crt /etc/pki/tls/certs
  2. cp ca.csr /etc/pki/tls/certs
  3. cp ca.key /etc/pki/tls/certs
複製代碼
警告:如果你採用SELinux,請確保你複製這些文件而不是遷移它們。否則Apache將會投訴關於違漏了的憑證檔,因為它不能讀入這些擁有錯誤SELinux脈絡的憑證檔。

假如你遷移了這些文件而不是複制它們,你可以用以下的指命來矯正這些文件的SELinux 脈絡,因為/etc/pki/* 的正確脈絡定義已包含在SELinux 政策裡。
  1. restorecon -RvF /etc/pki
複製代碼
接著我們須要更新Apache SSL 的配置文件
  1. vi +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf
複製代碼
請修改路徑至金鑰文件的存儲位置。如果你採用上面的方法,這會是
  1. SSLCertificateFile /etc/pki/tls/certs/ca.crt
複製代碼
然後在再低數行的位置為憑證金鑰文件設置正確路徑。如果你按照上面的指引,這會是:
  1. SSLCertificateKeyFile /etc/pki/tls/private/ca.key
複製代碼
存儲及離開文件,然後重新引導Apache
  1. /etc/init.d/httpd restart
複製代碼
假若一切正常的話,你現在應該可以通過https 連接到你的服務器,並看見CentOS 的缺省頁面。由於憑證是自我簽署的,瀏覽器一般會徵詢你是否接納這個憑證。

3. 設置虛擬主機
一如你為http在端口80上設立VirtualHost,你亦可為https在端口443上作樣似的設置。一個在端口80上的網站的典型VirtualHost有如下樣子
  1. <VirtualHost *:80>
  2.         <Directory /var/www/vhosts/yoursite.com/httpdocs>
  3.         AllowOverride All
  4.         </Directory>
  5.         DocumentRoot /var/www/vhosts/yoursite.com/httpdocs
  6.         ServerName yoursite.com
  7. </VirtualHost>
複製代碼
要在端口443 上增加一個姊妹網站,你需要在你的文件頂部加入下列內容
NameVirtualHost *:443
然後再加入一個類似如下的VirtualHost記錄:
  1. <VirtualHost *:443>
  2.         SSLEngine on
  3.         SSLCertificateFile /etc/pki/tls/certs/ca.crt
  4.         SSLCertificateKeyFile /etc/pki/tls/certs/ca.key
  5.         <Directory /var/www/vhosts/yoursite.com/httpsdocs>
  6.         AllowOverride All
  7.         </Directory>
  8.         DocumentRoot /var/www/vhosts/yoursite.com/httpsdocs
  9.         ServerName yoursite.com
  10. </VirtualHost>
複製代碼
利用這個指令重新引導Apache
  1. /etc/init.d/httpd restart
複製代碼
4. 設置防火牆
你現在應該擁有一個以自我簽署憑證來支持https 的網站。如果你未能連接,你或許需要在防火牆上打開端口。要這樣做,請更改你的iptables 規則:
  1. iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  2. /sbin/service iptables save
  3. iptables -L -v
複製代碼
Translation of revision 7

當出現錯誤訊息Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration


結果發現是少Load Modules
找到
vi /etc/httpd/conf/httpd.conf
加入
  1. LoadModule ssl_module modules/mod_ssl.so
複製代碼
然後
  1. /etc/init.d/httpd restart
複製代碼

 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2016-12-10 22:56 , Processed in 0.060066 second(s), 21 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表