You are here: Home > 技術…… > nginx單IP多域名多ssl證書的配置

nginx單IP多域名多ssl證書的配置

今天無意中和@snnn119說起SSL的事情,我才發現居然現在有免費的SSL證書了。搜了一下,發現從2009年的9月開始,微軟就把startssl加進根證書列表裏面了……

好吧。記錄一下。

首先去http://www.startssl.com,點左上角的“Sign Up”來申請一個帳號。

填一堆註冊信息之後,會發封郵件給你,把郵件裏面的驗證碼填上后,賬號就算註冊好了。不過這個還不夠,馬上就會要“認證”郵件。其實就是給你郵箱再發一封驗證碼,然後再填一次,然後就徹底Ok了。

之後是“認證”域名。

Control Panel》Validations Wizard,然後選擇“Domain Name Validation”,然後輸入域名,然後選擇是往whois裏面的郵箱、hostmaster@domain、 postmaster@domain或webmaster@domain其中的一個發驗證碼,收到之後再填回去就算是認證成功了。

然後就是生成SSL的key和cer。

選擇“Certificates Wizard”,然後選擇“Web Server SSL/TLS Certificate”,輸入一個密碼,然後重復(一定要記下來,這個很重要,配置好nginx之後每次重啓nginx都要用,也可以去Tools那裏Decrypt一下,就不用了),然後就可以生成一個private key了。然後輸入子域名,就可以生成cer文件了。

如果有多個子域名,那麽就生成多對key/cer文件。

然後就是配置nginx了。之前聽説一個IP只能對應一個SSL證書,經過@snnn119的講解,這個也是正常的,畢竟要先要根據證書建立一個SSL連接,然後再在上面走http協議。我是根據這個教程來配的。

我的是這樣的:

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
  listen 443; #端口
  ssl on;  #打開SSL
  ssl_session_timeout 5m; #ssl超時
  server_name blog.netson-cn.net; #域名
  ssl_certificate blogssl.cer; #給blog.netson-cn.net生成的cer文件的地址
  ssl_certificate_key blogssl.key; #對應的key文件

  #日誌地址
  access_log /var/log/nginx/ssl-blog.netson-cn.net.access.log;
  #我之前把根目錄、php配置、50x錯誤頁面等内容都放在這個文件裏面了,這下省事了:)
  include wordpress-netson.conf;
}

説白了就是建立多一個nginx的虛擬機,端口是443,打開ssl……

之後測試成功了……然後我想死馬儅活馬騎,生成了另外一個子域的key和cer,照貓畵虎再配一遍……於是,很意外地,成功了……一點周折都沒有……

不過這可把@snnn119奇怪坏了,我這完全是瞎貓撞死老虎,SSL的原理一點都不懂,配好了也是知其然不知其所以然的……到這會兒人家還在研究這究竟咋回事呢……而我就悠哉遊哉得寫這篇Blog了……

PS:根據@snnn119的最新研究研究結果表明,用linux下的wget訪問排在nginx配置文件後面的那個子域的話,會用第一個子域的key,導致驗證失敗,但是用瀏覽器FireFox 3.6,IE8則沒有這個問題,“wget请求的时候,没有把servername带上。而浏览器带的有”,而在連接ssl的時候帶上servername,“是以TLSv1的extension的方式出现的”。

PSS:@snnn119同學發了一篇Blog詳細地説了一下原理。

最重要的是下面的内容:

库:

  • openssl: 0.9.8f

客户端:

  • Mozilla Firefox 2.0 or later
  • Opera 8.0 or later (with TLS 1.1 enabled)
  • Internet Explorer 7.0 or later (on Vista, not XP)
  • Google Chrome
  • Safari 3.2.1 on Mac OS X 10.5.6

服务器:

  • apache/nginx的较新版本都支持,主要取决于tls库(比如openssl)。

也就是說,在XP下面,並且用IE的話,如果用HTTPS訪問nginx配置文件裏面排在後面的ssl虛擬機,就會報一個證書不匹配的錯誤。

Tags: , , ,

One Response to “nginx單IP多域名多ssl證書的配置”

  1. cm说道:

    IE会自动从webtrust更新证书列表并自动安装。并且startcom在08年的时候从安永通过了webtrust认证,但我不确定它的Class 1证书是否在上述之列。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注