kevinhu 發表於 2015-7-15 16:37:06

如何建構一個SSL證書在Apache的網站上

本帖最後由 kevinhu 於 2016-4-19 15:52 編輯

通過SSL證書的方法去對網站信息加密,可以讓網站的連線更具保密性,一般商業網站在正常情況下都是向第三方證書機構購買取得該單位所發行的SSL證書來使用,如果不用第三機構發的SSL證書的話,還可以選擇通過SSL證書產生器自行簽證的SSL證書,只是這樣的證書就沒有第三方機構的認證了,底下所示範的是由自行產生的SSL證書來架設SSL協議的網站。

這裡的示範是以Debian 7 的Linux為架構的安裝架設程序:

1. 安裝Web Server: Apache
安裝Apache2的指令

$sudo apt-get install apache2
### Apache安裝的過程就不在此說明的範圍。

2. 設定 Apache2 Web server 使用SSL協定的設定
設定開啟Apache使用SSL通訊協定模式

$sudo a2ensite default-ssl$sudo a2enmod ssl

設定好重新啟動Apache server

$sudo service apache2 restart
接下來到使用端開瀏覽器測試看看是否server正確運作,瀏覽器端的網站輸入要改以https://為開頭加上網址來瀏覽網站,不過我們會收到瀏覽器的警告證書是不被信任的網站信息。

3.產生自行簽證的證書
這裡我們使用 ssl-cert 套件來產生SSL證書,使用前記得先安裝好
接下來我們要為網站設定SSL證書並安裝在 /etc/apache2/ssl路徑下
因此要先為存放證書的地方建立好目錄

$sudo mkdir /etc/apache2/ssl
接下來通過產生器來產生SSL證書在我們所事先建立好的目錄下

$sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
證書的有效期是可以由我們自己來決定的,如果懶一點可以設定到10年也可以,在-days 365更改為-days 3650就行,有關產生器openssl的參數設定請上openssl網站查詢
指令下達後會在console上要你回覆有關證書的相關資訊,其中最重要的部分是在 Common Name 的部分,你必須在這里輸入你網站的官方domain name或者是實體IP位址。
You are about to be asked to enter information that will be incorporatedinto 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) : US
State or Province Name (full name) :New Yor
Locality Name (eg, city) []: NYC
Organization Name (eg, company) : Awesome Inc
Organizational Unit Name (eg, section) []: Dept of Merriment
Common Name (e.g. server FQDN or YOUR name)[]: example.com
Email Address []: webmaster@awesomeinc.com

在上述的指令執行後會在我們所建立的目錄下產生一個金鑰(apache.key)及一個證書(apache.crt)。

4. 把證書設起來
現在我們已經備齊了所有需要的東西了,接下來就是去設定好網站主機去顯示我們的新證書了。
先打開SSL的設定檔
$sudo nano /etc/apache2/sites-available/default-ssl
在檔案中開頭為 <VirtualHost default:443> 的這段中做底下的修改
加你server name 在 Server Admin email: 的右下方,增加底下一行參數
ServerName example.com:443
注意:example.com 應要用你自己網站的domain或實體IP取代,這必須要更你在證書產生時所指定的Common Nane要一致。
然後再找出底下二行,並確定是否跟你的證書和金鑰一致否

      #   A self-signed (snakeoil) certificate can be created by installing
      #   the ssl-cert package. See
      #   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
      #   If both key and certificate are stored in the same file, only the
      #   SSLCertificateFile directive is needed.
      SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
      SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

改為我們自己產生的證書和金鑰,包括路徑也要正確

SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

確定無誤後存檔離開

5. 啟動新的虛擬伺服器主機
在網站將要以443Port運作前,必須先將虛擬主機啟動起來

$sudo a2ensite default

完全設定好後,在讓Apache重新載入設定即可

$sudo service apache2 reload

接下來在瀏覽器上就可以看到你的網站上的新證書了。

頁: [1]
查看完整版本: 如何建構一個SSL證書在Apache的網站上