Leo Yeh's Blog

解決問題 SSL/TLS (2)

教學目標

主要解決如何在 Linux 作業系統中,將 SSL 憑證和金鑰檔設定至 Apache 伺服器,讓我們可以模擬進行安全連線的問題。

重點概念

若要將 SSL 憑證和金鑰檔設定至 Apache 伺服器,讓我們可以進行安全連線,其實只要簡單五個步驟就能夠完成初步實作,分別為;

  1. 安裝 Apache 伺服器。
  2. 建立 SSL 憑證和金鑰檔。
  3. 設定 Apache 伺服器。
  4. 啟動 Apache 伺服器。
  5. 測試與驗證。

安裝 Apache 伺服器

透過 apt 指令下載與安裝 Apache 伺服器和 SSL 模組。

下載與安裝 Apache 伺服器。

1
2
$ sudo apt-get update
$ sudo apt-get install apache2

下載與安裝 SSL 模組。

1
$ sudo a2enmod ssl

建立 SSL 憑證和金鑰檔

產生一組沒有加密的 2048 bits 私密金鑰和憑證簽署請求。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/server.key -out /etc/apache2/ssl/server.crt
Generating a 2048 bit RSA private key
....+++
........+++
writing new private key to '/etc/apache2/ssl/server.key'
-----
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) [AU]:TW
State or Province Name (full name) [Some-State]:Taiwan
Locality Name (eg, city) []:Taipei
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:www.myserver.com
Email Address []:

指令詳細說明:

設定 Apache 伺服器

修改 default-ssl.conf 檔案,檔案路徑為:/etc/apache2/sites-available/default-ssl.conf。

1
sudo vi /etc/apache2/sites-available/default-ssl.conf

請先將所有內容以 # 註解,接著新增下述內容,其中主要修改參數有四項,分別為:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin admin@myserver.com
ServerName myserver.com
ServerAlias www.myserver.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>

設定 SSL 設定檔至 Apache 伺服器中。

1
$ sudo a2ensite default-ssl.conf

啟動 Apache 伺服器

1
$ sudo service apache2 restart

測試與驗證

開啟瀏覽器輸入以下網址進行測試與驗證。

1
$ firefox https://127.0.0.1

總結雖然透過安裝 Apache 伺服器、建立 SSL 憑證和金鑰檔、設定 Apache 伺服器、啟動 Apache 伺服器和測試與驗證簡單五個步驟就能夠在 Linux 作業系統中完成安全連線的模擬實作,但是當我們進行解決方案的部署時,則會花費許多時間在其它軟體或系統的相關設定。

相關資源

⬅️ Go back