Ubuntu Linux服務器搭建SSL/TLS(https)(在StartSSL能夠獲得免費證書)

首先SSL/TLS是什麼鬼?好比你如今正在看的https://awaimai.com/,前面是https,代表這個是https協議,https就是http + SSL/TLS,在http外面套一個加密層,讓第三方難以獲得傳輸的明文數據。若是用chrome訪問這個站,在這個URL旁邊會顯示一個綠色的鎖,代表這個鏈接是安全的。另外境外的https還有一個附加效果就是抵禦關鍵字的審查,同時Google也更喜歡收錄https的站點。html

其實以上是在說廢話,看這文章的乃萌確定是知道此爲什麼物纔會找到這裏來的啦,因此就不廢話了,如下是搭建步驟:linux

  1. 生成公鑰和私鑰對
  2. 公鑰提交到CA機構簽發一個crt證書(不建議自簽發證書)
  3. 配置證書鏈
  4. 在你的 apache 或 nginx 裏開啓SSL支持並配置好你的crt證書和私鑰
  5. [可選]繼續其它配置,如SPDY,HSTS,SSL session resumption 和 Perfect Forward Secrecy。其中,你若是但願你的站點是全 https 的話,建議配置HSTS,這樣別人使用 http 訪問時會自動轉向到 https

因爲這裏主要講搭建步驟,去CA機構註冊什麼的就不介紹了,我的小站推薦 StartSSL 和 AlphaSSL ,前者能夠獲得免費證書。nginx

1 生成公鑰和私鑰對

執行如下命令git

$ openssl genrsa –out my-private.key 2048

就會在當前目錄下生成一個私鑰文件:my-private.key,文件名本身隨便定義。
若是須要對私鑰加密,能夠執行sql

$ openssl genrsa -aes256 –out my-private.key 2048

這時須要輸入你的自定義密碼來保護這個私鑰,以後的步驟若用到私鑰,則會要求你輸入你的自定義密碼,而後再執行chrome

$ openssl req –new –key my-private.key –out www.awaimai.com.csr

這時會要求你輸入一些信息,具體以下:apache

Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []: Email Address []: A challenge password []: An optional company name []:

注意:從 Email Address 開始不要填寫。Common Name 填寫你要 SSL 支持的域名(你的站的域名),如 www.awaimai.com。若是你申請的是泛域名證書,那麼這裏應該填寫相似 *.awaimai.com
填寫完畢後就會生成一個 www.awaimai.com.csr 文件,這樣第一步就完成了。ubuntu

2 公鑰提交到CA機構簽發一個crt證書

使用任何一個文本編輯器打開剛纔生成的csr文件,你將會看到相似以下的內容:瀏覽器

 -----BEGIN CERTIFICATE REQUEST-----
 MIICrjCCAZYCAQAwaTELMAkGA1UEBhMCR0IxDzANBgNVBAgMBkxvbmRvbjEPMA0G
 ......
 -----END CERTIFICATE REQUEST-----

複製裏面所有內容,而後在CA機構網站上,在提交csr內容的地方,粘貼。以下是 StartSSL 和 AlphaSSL 的網站地址。

簽發成功後,你就能下載回來一個.crt文件,可能經過網頁上下載,也可能經過郵件方式發送給你。若是是郵件方式的話,要注意最好是使用gmail郵箱。郵件方式的話須要自行復制裏面crt文件的部分自行保存爲crt文件。crt文件相似如下的格式:

 -----BEGIN CERTIFICATE-----
 MIIETTCCAzWgAwIBAgILBAAAAAABRE7wNjEwDQYJKoZIhvcNAQELBQAwVzELMAkG
 A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
 b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw
 MDBaFw0yNDAyMjAxMDAwMDBaMEwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
 YWxTaWduIG52LXNhMSIwIAYDVQQDExlBbHBoYVNTTCBDQSAtIFNIQTI1NiAtIEcy
 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2gHs5OxzYPt+j2q3xhfj
 kmQy1KwA2aIPue3ua4qGypJn2XTXXUcCPI9A1p5tFM3D2ik5pw8FCmiiZhoexLKL
 dljlq10dj0CzOYvvHoN9ItDjqQAu7FPPYhmFRChMwCfLew7sEGQAEKQFzKByvkFs
 MVtI5LHsuSPrVU3QfWJKpbSlpFmFxSWRpv6mCZ8GEG2PgQxkQF5zAJrgLmWYVBAA
 cJjI4e00X9icxw3A1iNZRfz+VXqG7pRgIvGu0eZVRvaZxRsIdF+ssGSEj4k4HKGn
 kCFPAm694GFn1PhChw8K98kEbSqpL+9Cpd/do1PbmB6B+Zpye1reTz5/olig4het
 ZwIDAQABo4IBIzCCAR8wDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8C
 AQAwHQYDVR0OBBYEFPXN1TwIUPlqTzq3l9pWg+Zp0mj3MEUGA1UdIAQ+MDwwOgYE
 VR0gADAyMDAGCCsGAQUFBwIBFiRodHRwczovL3d3dy5hbHBoYXNzbC5jb20vcmVw
 b3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nbG9iYWxzaWdu
 Lm5ldC9yb290LmNybDA9BggrBgEFBQcBAQQxMC8wLQYIKwYBBQUHMAGGIWh0dHA6
 Ly9vY3NwLmdsb2JhbHNpZ24uY29tL3Jvb3RyMTAfBgNVHSMEGDAWgBRge2YaRQ2X
 yolQL30EzTSo//z9SzANBgkqhkiG9w0BAQsFAAOCAQEAYEBoFkfnFo3bXKFWKsv0
 XJuwHqJL9csCP/gLofKnQtS3TOvjZoDzJUN4LhsXVgdSGMvRqOzm+3M+pGKMgLTS
 xRJzo9P6Aji+Yz2EuJnB8br3n8NA0VgYU8Fi3a8YQn80TsVD1XGwMADH45CuP1eG
 l87qDBKOInDjZqdUfy4oy9RU0LMeYmcI+Sfhy+NmuCQbiWqJRGXy2UzSWByMTsCV
 odTvZy84IOgu/5ZR8LrYPZJwR2UcnnNytGAMXOLRc3bgr07i5TelRS+KIz6HxzDm
 MTh89N1SyvNTBCVXVmaU6Avu5gMUTu79bZRknl7OedSyps9AsUSoPocZXun4IRZZ
 Uw==
 -----END CERTIFICATE-----

(以上其實就是AlphaSSL的crt證書,下文會用到)保存好了後,第二步就完成了。

3 配置證書鏈

這一步被不少其它的教程忽略,由於這一步在某些狀況下不是必需的,好比有的會直接給你返回證書鏈文件,可是在前面推薦的兩家機構所簽發的證書使用這個步驟的話,會簡化很多麻煩事。
首先,打開這個證書,你會發現你的網站與根證書中間差了一級,好比窩的這個的父證書是AlphaSSL,再上一級纔是根證書GlobalSign。而瀏覽器和操做系統裏面保存的均是可信任的根證書,中間那一層AlphaSSL極可能是沒有的,直接使用剛纔保存的crt證書會致使瀏覽器提示這是不可信的網站。怎麼辦呢?這就須要配置證書鏈。其實配置這個證書鏈很是的簡單,首先仍是使用文本編輯器打開你的crt證書,而後把你的父級crt證書的內容粘貼到後面,如這樣子:

 -----BEGIN CERTIFICATE-----
 本身的crt證書
 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- 父級的crt證書 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- 父級的父級crt證書 -----END CERTIFICATE-----

有多少層就作多少層(除了根證書那一層),而後保存爲新的crt文件,就完成了證書鏈的配置了。
這樣作能夠簡化後面的配置。
不過這個時候問題來了,父級的crt證書怎麼獲得呢?好比這裏窩的父級證書是AlphaSSL,直接用firefox訪問它的網站,而後查看證書信息,導出爲crt就好了。

4 在Apache裏開啓SSL支持並配置crt證書和私鑰

由於nginx裏配置這個比apache容易多了,這裏就只介紹 Apache 的。
註明一下,窩用的linux發行版爲ubuntu 12.04,部分命令或路徑可能因不一樣的發生版略有差異。
首先開啓apache中SSL模塊:

# a2enmod ssl

進入路徑 /etc/apache2/sites-enabled,看一下是否是隻有一個default,而同時 /etc/apache2/sites-available/ 下存在 default-ssl,是的話在 sites-enabled下建立一個連接

/etc/apache2/sites-enabled# ln -s ../sites-available/default-ssl 001-ssl

在 001-ssl 配置文件中,除了SSL配置部分,其餘的保持和本來的http的站一致就行了(可別作出直接整個文件內容覆蓋這麼二的事情)。若是漏作這個步驟,Apache會報 ssl_error_rx_record_too_long 錯誤。而後開始配置SSL部分,注意如下三行:

SSLCertificateFile /home/root/awaimai.com.crt
SSLCertificateKeyFile /home/root/awaimai.com.key
SSLCertificateChainFile /home/root/awaimai.com.crt

其中,

  • SSLCertificateFile:crt文件路徑(必需)
  • SSLCertificateKeyFile :私鑰路徑(必需)
  • SSLCertificateChainFile:證書鏈文件路徑(可選)

若是已經把證書鏈直接配置到 crt 文件裏的話,SSLCertificateChainFile 就直接填寫crt文件的路徑。若是簽發機構把證書鏈文件也發給你的話,保存爲.pem文件而後在這裏引用便可。若是你的證書的父級證書是根證書,或已經被主流瀏覽器或操做系統普遍支持,那麼此段可註釋忽略。

最後檢查是否 SSLEngine on,對了之後執行

# service apache2 restart

重啓服務便可。

5 配置HSTS (可選)

這裏只介紹HSTS的配置,由於這個極可能會用到,SPDY什麼的參閱別人的配置文章吧。執行如下命令

# a2enmod headers

開啓headers模塊,而後編輯文件 /etc/apache2/sites-enabled/001-ssl (若是你剛纔設置的文件名是001-ssl的話,若不是就本身換)
在VirtualHost裏面加入一行:

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

其中 preload 那一段是可選的,加不加都可,加了的話能夠去 google 申請 Chromium 的 Preload HSTS 列表。而 63072000 那個是有效期的秒數,63072000 是兩年的秒數,在有效期裏面,瀏覽器會記着這個站是應該用 https 訪問的。

6 總結

最後嘛,爲啥窩會想到弄成https呢?由於窩知道不少路由器能夠開啓網站訪問log,會記錄下訪問者IP、所訪問的url、以及get/post參數內容。你知道這表示什麼嗎?

這表示若是你經過這個路由器上網,而後在普通 http 網頁上作登錄操做,那麼路由器的管理員能夠經過查 log 獲得你對應網站的登錄信息,這是很是危險的,由於絕大多數的網站在傳輸登錄信息的時候,均使用明文發送密碼,這樣你的賬號密碼就被看得一清二楚了。可是 https 的話,路由器根本沒法知道你所訪問的 url 是什麼,更別說具體的參數內容了,只能知道訪問者的IP和目標IP,安全性天然大大提升。

好比窩在知乎上的密碼會常常性的更換,爲何呢?由於只要登錄知乎,好比你在麥當勞用免費 wifi,那麼那邊的路由管理員就知道你的賬號密碼了。或者電信聯通什麼的也會知道,由於它們在政策下必須保留至少3個月的路由數據,而你的賬號密碼就在那裏保存至少三個月,想要抓你只要把你的登錄記錄找到,而後登錄你的賬號,查你的我的信息就知道你究竟是誰了。也就是說,任何非https鏈接下作登錄或其它敏感操做是很是危險的,全部的操做被完整的記錄了下來。窩徹底不明白知乎這種大站爲啥都不支持https,用戶私隱如此不值錢?

本文除了介紹SSL/TLS的配置外,還簡要的介紹了一下其必要性,科普一下網絡安全方面的東西。如對這方面還有疑問,歡迎留言或mail窩。

http://www.awaimai.com/126.html

相關文章
相關標籤/搜索