網址申請 | 網站代管 | 資安服務 | SSL 數位憑證
Cloudmax 匯智 SSL 數位憑證服務
        中國  |  如何付款  |  聯繫我們  |  Cloudmax 匯智
 Geotrust SSL
  技術支援服務: 歡迎來到 Cloudmax 匯智 SSL 數位憑證客戶服務中心。  
     產品價格一覽表
     產品購買指南
     申請流程

Apache 2.2-SSL操作大全

製作CSR申請文件
 
製作Apache下使用的CSR請求檔,最簡單的辦法就直接使用我們的 OpenSSL CSR線上生成器: http://www.myssl.tw/openssl/createcsr.asp
(注意:您必須同時保存server.key和server.csr文件)
 
Apache 2.2 SSL主要採用BASE64位的PEM檔格式,可以採用Openssl命令行工具來生成CSR檔,OpenSSL工具是免費的,可以從www.openssl.org下載到最新的源碼,但需要自己編譯(見Openssl編譯簡介)。

1、Openssl是一個命令行工具,首先將下載包解壓到C:\openssl下。

2、打開DOS命令行視窗,進入C:\openssl,輸入命令:
openssl req -new -nodes -keyout server.key -out server.csr

Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
...........................++++++
....................................++++++
writing new private key to '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]:CN
State or Province Name (full name) [Some-State]:Shanghai
Locality Name (eg, city) []:Shanghai
Organization Name (eg, company) [Internet Widgits Ltd]:
Shanghai Fastcom Technology Co.,Ltd.
Organizational Unit Name (eg, section) []:IT Dept.
Common Name (eg, YOUR name) []:www.myssl.cn
Email Address []:
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

3、在完成了如上的交互資訊輸入後,當前目錄下將產生兩個檔:server.key 和 server.csr。請妥善保存這兩個檔,請不要洩露server.key私鑰文件。

4、在這一命令執行的過程中,系統會要求您填寫如下資訊:
 
Country Name (2 letter code) 使用國際標準組織(ISO)國碼格式,填寫2個字母的國家代號。台灣請填寫TW。
State or Province Name (full name) 省份,比如填寫Taiwan
Locality Name (eg, city) 城市,比如填寫Taipei
Organization Name (eg, company) 組織單位,比如填寫公司名稱的拼音
Organizational Unit Name (eg, section) 比如填寫IT Dept
Common Name (eg, your websites domain name): 行使 SSL 加密的域名。請注意這裏指的是直接使用 SSL 的網站網址 例如:pay.abc.com。 一個網站這裏定義是:
abc.com 是一個網站;
www.abc.com 是另外一個網站;
pay.abc.com 又是另外一個網站。
Email Address 郵件位址,可以不填
A challenge password 可以不填
An optional company name 可以不填

5、如何產生2048位的密鑰對?

在上面的命令行交互中,我們看到“Generating a 1024 bit RSA private key”,即系統採用1024位元的RSA密鑰長度,一般來說1024位是足夠的,但是在申請EV憑證的時候,我們必須採用2048位的密鑰長度,要生成2048位的密鑰,可以修改上面的命令行:(斜體部分為增加的參數)
openssl req -new -nodes -newkey rsa:2048 -keyout server.key -out server.csr

6、如何製作中文的CSR文件?

中文CSR檔,主要指企業名稱、部門,城市,省份等資訊採用中文,通用名和國家代碼仍然必須是英文的,GeoTrust目前已經全面支持中文的CSR,要製作中文的CSR,最簡單的辦法仍然是採用我們的線上CSR生成器: http://www.myssl.tw/openssl/createcsr.asp

如果希望自己通過Openssl工具來製作中文CSR就需要多費一些工夫了,下面詳細介紹一下採用Openssl命令行製作中文CSR的方法。
Openssl本身是可以支援UTF-8編碼來支援中文的,但是如果通過DOS命令行是無法輸入UTF-8的中文字元的,所以我們必須採用Opnessl.cnf配置檔的缺省值來實現中文字的輸入。採用一個文本編輯器,最好是支援utf-8字元的,我採用UltraEdit,打開Openssl.cnf檔,首先修改:

string_mask = utf8only
這句話將強制字元的輸入採用UTF-8的編碼格式,然後修改缺省DN資訊,錄入我們需要合中文字元,如下
commonName_default		= www.myssl.tw
0.organizationName_default	= 匯智資訊股份有限公司
organizationalUnitName_default	= IT 部門
stateOrProvinceName_default	= 台灣
localityName_default		= 台北
countryName_default		= TW
然後將文件按utf-8,no bom的編碼格式保存,在Ultraedit下,請選擇“另存為”,格式為“UTF-8 - NO-BOM”。如果沒有可以支援UTF-8的編輯工具,也可以下載一個ICONV來做編碼轉換工作。

準備好openss.cnf文件後,輸入命令行:
openssl req -utf8 -config config.cnf -new -nodes -batch -keyout server.key -out server.csr
系統將自動生成CSR檔,保存在server.csr中。

CSR已經做好,最後強調,必須同時保存好server.csr和server.key2個檔,尤其是server.key一旦丟失,將無法再使用這個憑證。


安裝憑證文件

1、將憑證內容存為一個檔:

您會收到一封來自GeoTrust的郵件,憑證內容附在郵件中。如果憑證是以附件的形式(Cert.cer)夾帶在郵件中,您就可以直接應用它。如果您的憑證中以文本的方式存在郵件中,您就需要將郵件中的憑證部分的內容用Vi或Notepad存成一個純文字檔案。不要將其存成Microsoft Word 或其他文字處理軟體格式,並確定憑證內容中不含有空行和空格,檔案名可以為server.cer。如下所示:


將保存好的server.cer檔和製作CSR時候生成的server.key一起複製到伺服器上。

2、修改httpd.conf文件。

Apache一般有2個版本下載,一個是帶SSL模組的,一個是不帶SSL的,請首先檢查自己的SSL是包含了SSL模組的,否則就沒法做了。Apache的參數配置都在httpd.conf檔中,SSL配置也是如此,此外還可以通過include httpd-ssl.conf來包含一個專門配置SSL的配置檔,如果啟動了httpd-include ssl.conf,則可以打開httpd-ssl.conf來配置相應參數。

一般,我們直接在httpd.conf檔中直接配置SSL參數:

 
#載入模組mod_ssl.so,此模組是啟用SSL功能必須的。
LoadModule ssl_module modules/mod_ssl.so
 
#監聽443埠
Listen 443
 
#建立一個SSL的虛擬站點,避免SSL配置影響原來HTTP的站點配置。
<VirtualHost _default_:443>
DocumentRoot "C:/Program Files/Apache2/htdocs"
ServerName www.myssl.cn:443
SSLEngine on
SSLCertificateFile "C:/SSL/server.cer"
SSLCertificateKeyFile "C:/SSL/server.key"
SSLCertificateChainFile "C:/SSL/chain.cer"
ErrorLog "C:/Program Files/Apache2/logs/error.log"
TransferLog "C:/Program Files/Apache2/logs/access.log"
</VirtualHost>
 
#說明主站是使用HTTP通信的,只有上面虛擬站點有SSL
SSLEngine off                               
	

配置參數說明如下(完整的SSL配置參數見這裏):

3、重新啟動Apache,如果是在Linux下,輸入:
apachectl stop
apachectl startssl


用戶端憑證認證

1、基本客戶憑證認證

強制客戶對整個站點都必須採用客戶憑證的方式,可以在原來的配置下增加如下參數:

<VirtualHost _default_:443>
......
......
......
# 需要客戶有一個用戶端憑證,並由ca.cer這個CA憑證簽署
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile conf/ssl.crt/ca.cer 
</VirtualHost>

2、如果只要求對特定目錄採用客戶憑證認證方式,其他目錄都不需要用戶端憑證,則可以採用如下配置:

<VirtualHost _default_:443>
......
......
......
# 需要客戶有一個用戶端憑證,並由ca.cer這個CA憑證簽署
SSLVerifyClient none
SSLCACertificateFile conf/ssl.crt/ca.crt
<Location /secure/area>
SSLVerifyClient require
SSLVerifyDepth 1
</Location>
</VirtualHost>

強制HTTPS瀏覽

強制HTTPS瀏覽,主要通過將用戶瀏覽的HTTP請求自動轉換為HTTPS請求,有兩種方式:一種是通過程式編寫的方式,詳見:"強制用戶通過SSL瀏覽網站" ;另一種方式則是通過Apache強大的Rewrite功能。

如果要針對整個網站全部執行HTTP自動轉為HTTPS的功能,可以在httpd.conf檔中,增加:

RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]

如果,僅要求對\secure目錄下的內容強制採用HTTPS瀏覽,可以在httpd.conf文件中加入如下語句:

	
<Directory "C:\Program Files\htdocs\secure">
RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}/secure/$1 [L,R]
</Directory>

瀏覽控制舉例

如何對來自Internet並要瀏覽Intranet的客戶強制採用強加密的HTTPS通信,並採用基本或者客戶憑證的認證方式?同時還要確保來自Intranet的客戶可以進行HTTP瀏覽?

假設IntranetIP位址段是192.160.1.0/24,Intranet站點子區域的URL是/subarea ,則可以在HTTPS虛擬主機站點以外增加如下配置(這樣可以同時作用於HTTPS和HTTP):

SSLCACertificateFile conf/ssl.crt/company-ca.crt
 
<Directory /usr/local/apache2/htdocs>
# subarea以外的區域只允許來自Intranet的瀏覽
Order                deny,allow
Deny                 from all
Allow                from 192.168.1.0/24
</Directory>
 
<Directory /usr/local/apache2/htdocs/subarea>
# 在subarea以內,允許所有來自Intranet的瀏覽,
# 但對來自Internet的瀏覽,僅允許HTTPS+Strong-Cipher+Password
# 或者HTTPS+Strong-Cipher+Client-Certificate
 
# 如果使用了HTTPS,則確保使用高強度加密
# 同時允許客戶以基本認證的形式認證
SSLVerifyClient      optional
SSLVerifyDepth       1
SSLOptions           +FakeBasicAuth +StrictRequire
SSLRequire           %{SSL_CIPHER_USEKEYSIZE} >= 128
 
# 強制來自Internet的客戶使用HTTPS
RewriteEngine        on
RewriteCond          %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$
RewriteCond          %{HTTPS} !=on
RewriteRule          ^(.*)  https://%{SERVER_NAME}$1 [L,R]
 
# 允許網路瀏覽和基本認證
Satisfy              any
 
# 控制網路瀏覽
Order                deny,allow
Deny                 from all
Allow                192.168.1.0/24
 
# HTTP基本認證
AuthType             basic
AuthName             "Protected Intranet Area"
AuthBasicProvider    file
AuthUserFile         conf/protected.passwd
Require              valid-user
</Directory>
 

憑證的備份(導出)

在Apache下的憑證備份是非常簡單的,打開httpd.conf檔,找到SSLCertificateFile和SSLCertificateKeyFile指定的2個檔,通常是.cer(.crt)和.key檔,將這兩個檔複製到備份媒質上即可。


憑證的恢復(導入)

要恢復Apache的憑證同樣非常簡單,將備份的.cer和.key檔,複製到新的伺服器上,然後參考上面伺服器憑證安裝說明,修改httpd.conf檔即可。


通用憑證和多域名憑證在虛擬主機上的部署

如果要在一個IP位址上部署多個SSL網站,一種辦法就是給每個網站分配不同的埠號,但這給用戶使用帶來很多麻煩。如果要在同一個IP位址的443埠上部署多個SSL網站,必須保證這些網站的功能變數名稱都能匹配相同的一張SSL憑證。這是因為SSL握手過程是通過IP+Port來進行通信,一個IP的443埠只能返給客戶一張SSL憑證(即使配置了多張憑證,也只能返回第一張,因為用戶請求資訊中,只有看到IP位址,無法區分用戶需要哪個憑證),如果這張憑證能夠滿足這些網站的主機名匹配要求,就可以使用。

一般能匹配多個主機名的憑證有通用憑證*.domain.com和多域名憑證(www.domain.com,ftp.domain.com等),以下我們提供一個典型同一個IP上的多主機名部署配置,www.domain.com對應的根目錄在WWW下,ftp.domain.com對應的根目錄在FTP下

NameVirtualHost 11.22.33.44:443
 
<VirtualHost 11.22.33.44:443>
DocumentRoot "C:/Apache2.2/htdocs/www"
ServerName www.domain.com
SSLEngine on
SSLCertificateFile "C:/Apache2.2/conf/server.cer"
SSLCertificateKeyFile "C:/Apache2.2/conf/server.key"
</VirtualHost>
 
<VirtualHost 11.22.33.44:443>
DocumentRoot "C:/Apache2.2/htdocs/ftp"
ServerName ftp.domain.com
SSLEngine on
SSLCertificateFile "C:/Apache2.2/conf/server.cer"
SSLCertificateKeyFile "C:/Apache2.2/conf/server.key"
</VirtualHost>
 

Openssl編譯簡介

1、Openssl是開源的,可以到http://www.openssl.org/source/下載最新的版本。然後解壓到c:\openssl。

2、要編譯Openssl,需要下載並安裝ActivePerl,並在系統路徑中添加“C:\Perl\site\bin;C:\Perl\bin”

3、安裝Vs2003(也可以安裝VS2005,2008但這2個版本的VC編譯出來的Openssl是有BUG的,在特定情況下會產生win32異常錯誤,僅適合偶爾用一下的情況)。

4、使用VS2003下的Visual Studio.net 2003 Command Prompt進入控制臺模式(這個模式會自動設置各種環境變數)

5、進入c:\openssl。

6、輸入(注意大小寫): perl Configure VC-WIN32

7、輸入: ms\do_ms

8、輸入: nmake -f ms\ntdll.mak

9、Openssl已經編譯好了,執行程式在out32dll目錄下。



 
技術文件資料

技術名詞解釋

CSR的產生

伺服器憑證的安裝
   Apache 2.2
   Mod SSL
   WebLogic 6.0
   WebLogic 8.1
   IBM Websphere 5.1
   IBM Websphere MQ
   IBM HTTP Server
   Lotus Domino
   Windows 2000 - IIS 5.0
   Windows 2003 - IIS 6.0
   Netscape Enterprise3
   Netscape iPlanet 4.x
   Netscape iPlanet 6.x
   Webstar 4.x
   OpenSSL和CSR線上產生器
   QuicksslPremium安全標章
   Red Hat Secure Web      Server
   Stronghold
   Tomcat
   True BusinessID安全標章
   Zeus
   安裝中的防火牆問題

伺服器憑證的備份

聯繫銷售人員

常見問題與解答
SOSA 資訊透明化電子商店 ISO cert.No.573698