topsapps is a reporting platform for mobile developers that automatically downloads and visualizes sales data, App Store reviews, hourly ranks and more

LAMP下SSL設置教程

LAMP下SSL設置教程

https(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的 http 通道,簡單講是 http 的安全版。即 http 下加入 SSL 層,https 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。在各個 linux 發行版中,實現 SSL 的一般則是 openssl 套件。

默認情況下,LAMP沒有開啟 SSL 的,需要手動配置。本篇教程主要是將手動配置的過程總結一下。

下面將從申請 CSR 開始,一步一步部署 SSL。

1、生成證書請求 CSR 文件

這裡需要用到 openssl 命令,需要安裝 openssl。

centos 下:

%ignore_pre_1%

Debian 或 Ubuntu 下:

%ignore_pre_2%

以 RSA 2048 私鑰舉例,命令如下:

%ignore_pre_3%

以 ECC 256 私鑰舉例,命令如下:

%ignore_pre_4%

以上命令,在生成 CSR 的時候會有個交互,如下:

%ignore_pre_5%

注意:

這裡的 server.pem 即為私鑰,需要好好保存,最好你申請下來的證書在配置時,需要用到這個私鑰,一旦私鑰丟失,該證書就廢了,只能重新申請。

一般情況下,申請 RSA 2048 的證書就足夠了。

以上步驟全部做完,則會生成兩個文件:

server.pem

server.csr

將其下載回本地,妥善保管。用任意文本編輯器打開 server.csr,用裡面的內容去申請證書即可。

當然,最好是將這 2 個文件改名為你自己的域名,以方便辨識,比如:

teddysun_com.pem

teddysun_com.csr

2、申請證書

現在市面上應該已經存在 5 種免費 SSL(DV)的提供商了,分別是:

1)letsencrypt (https://github.com/certbot/certbot

2)startssl  (https://www.startssl.com/

3)wosign  (https://buy.wosign.com/free/

4)comodo

5)alphassl

前 3 種都比較容易申請,后 2 種則需要通過一些途徑才能免費獲取的到。

付費的則五花八門了,這裡就不再贅述。

申請過程省略。

最後你會得到一個證書文件(一般後綴名為 crt)。

注意:

有的證書(比如 comodo 及 alphassl)還需要合併證書鏈,將你得到的證書以及根證書合併到同一個文件中才能使用。

每家的證書鏈都是不一樣的,如果你是用 letsencrypt 申請的話,默認已經是有個完整證書鏈的證書了。

/etc/letsencrypt/live/<domain>/fullchain.pem

Tips:如何合併證書鏈?

用任意文本編輯器打開你的證書文件(比如名稱為:teddysun_com.crt),在文本的最後面添加根證書(teddysun_com.ca-bundle)里的全部內容,保存。

3、部署證書

安裝LAMP 環境后,默認是沒有加載 SSL 配置的。

1)這裡需要修改一下配置文件

/usr/local/apache/conf/httpd.conf

找到下面的一行

#Include conf/extra/httpd-ssl.conf

將前面的 # 註釋去掉,保存。

2)將合併后的證書,比如 teddysun_com.crt 和私鑰 teddysun_com.pem 複製到路徑 /usr/local/apache/conf/ 下。

3)修改配置文件 /usr/local/apache/conf/extra/httpd-ssl.conf ,內容如下:

%ignore_pre_6%

注意:

該配置文件是基於 Apache 2.4 而來。

VirtualHost 虛擬主機里的配置是可以更改的。

1)如果你想指定固定 IP 到該 VirtualHost,把 <VirtualHost *:443> 改為 <VirtualHost 12.34.56.78:443>,這裡的 12.34.56.78 是舉例 IP

2)DocumentRoot 是網站根目錄,指定為你自己的目錄

3)ServerName 是網站域名,指定為你自己的

4)ServerAlias 是網站的其他域名,可定義多行,也可不定義。不定義的話,就刪除該行

5)ErrorLog 是錯誤日誌,指定具體路徑

6)TransferLog 是訪問日誌,指定具體路徑

7)SSLEngine 必須是 on

8)SSLProtocol 是指定 SSL 連接方式,不包含 SSLv2 和 SSLv3,這兩種已不安全

9)SSLHonorCipherOrder 必須是 on

10)SSLCipherSuite 是加密套件,這裡去除了一些不再安全的一些方式

11)SSLCertificateFile 是證書文件,指定具體路徑

12)SSLCertificateKeyFile 是證書的私鑰文件,指定具體路徑

13)CustomLog 是自定義日誌的格式

14)BrowserMatch 是瀏覽器匹配,這裡主要是對微軟 IE 舊版本 2-5 進行了定義

15)Directory 是和 DocumentRoot 一致的,是對文件夾一些屬性的定義

參考鏈接:

https://httpd.apache.org/docs/current/mod/mod_ssl.html

https://httpd.apache.org/docs/current/mod/mod_setenvif.html

https://httpd.apache.org/docs/current/mod/core.html#directory

4、確認生效

在確認以上步驟全部完成,並且正確的情況下,重啟 Apache 后即可生效。

%ignore_pre_7%

查看 httpd 監聽的端口,應該會有 443

%ignore_pre_8%

域名解析好后,使用 Chrome 瀏覽器訪問,你就會看到你的網址前有個可愛的小綠鎖了。

5、測評

下面就可以來測評一下你的 SSL 部署的得分了。

訪問以下網址:

https://www.ssllabs.com/ssltest/index.html

輸入你的網站域名,跟上面配置里的 ServerName 的值一致。

稍等片刻,就會看到得分了。

按照以上配置,正常狀態下,得分應該是 A

转载请注明:TopsApps » LAMP下SSL設置教程

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址