Resin 是一個小巧,快速的jsp/servlets運行平臺,而且是全免費的,常見的Resin的版本有2.x ,3.x,最新版本是4.0.1。
Resin 支持Openssl和JSSE。所以我們可以使用Java Keystore文件即.jks文件,也可以使用Openssl的key+cer文件。以下部分,我們都將分Openssl和JSSE兩種情況來介紹。
Openssl模式。
制作Openssl模式下的Resin用CSR請求文件,最簡單的辦法就直接使用我們的 OpenSSL CSR在線生成器: https://www.myssl.cn/openssl/createcsr.asp
(注意:您必須同時保存server.key和server.csr文件)
如果要在本地制作CSR和KEY文件,可以采用Openssl命令行工具來生成CSR文件,OpenSSL工具是免費的,可以從www.openssl.org下載到最新的源碼,但需要自己編譯,你也可以下載使用已經(jīng)編譯好的OpenSSL 0.9.8.a for win32,下載地址是: http://www.myssl.cn/download/OpenSSL_0.9.8.a_Win32.zip
1、Openssl是一個命令行工具,首先將下載包解壓到C:\openssl下。
2、打開DOS命令行窗口,進入C:\openssl,輸入命令:
openssl req -new -nodes -keyout server.key -out server.csr
Loading 'screen' into random state - doneGenerating a 1024 bit RSA private key...........................++++++....................................++++++writing new private key to 'server.key'-----You are about to be asked to enter information that will beincorporated into your certificate request.What you are about to enter is what is called aDistinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:CNState or Province Name (full name) [Some-State]:ShanghaiLocality Name (eg, city) []:ShanghaiOrganization 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.cnEmail Address []:Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:An optional company name []:
3、在完成了如上的交互信息輸入后,當前目錄下將產(chǎn)生兩個文件:server.key 和 server.csr。請妥善保存這兩個文件,請不要泄露server.key私鑰文件。
4、在這一命令執(zhí)行的過程中,系統(tǒng)會要求您填寫如下信息:
Country Name (2 letter code) | 使用國際標準組織(ISO)國碼格式,填寫2個字母的國家代號。中國請?zhí)顚慍N。 |
State or Province Name (full name) | 省份,比如填寫Shanghai |
Locality Name (eg, city) | 城市,比如填寫Shanghai |
Organization Name (eg, company) | 組織單位,比如填寫公司名稱的拼音 |
Organizational Unit Name (eg, section) | 比如填寫IT Dept |
Common Name (eg, your websites domain name): | 行使 SSL 加密的網(wǎng)站地址。請注意這里并不是單指您的域名,而是直接使用 SSL 的網(wǎng)站名稱 例如:pay.abc.com。 一個網(wǎng)站這里定義是: abc.com 是一個網(wǎng)站; www.abc.com 是另外一個網(wǎng)站; pay.abc.com 又是另外一個網(wǎng)站。 |
Email Address | 郵件地址,可以不填 |
A challenge password | 可以不填 |
An optional company name | 可以不填 |
5、如何產(chǎn)生2048位的密鑰對?
在上面的命令行交互中,我們看到“Generating a 1024 bit RSA private key”,即系統(tǒng)缺省采用1024位的RSA密鑰長度,一般來說1024位是足夠的,但是在申請EV證書的時候,我們必須采用2048位的密鑰長度,要生成2048位的密鑰,可以修改上面的命令行:(斜體部分為增加的參數(shù))
openssl req -new -nodes -newkey rsa:2048 -keyout server.key -out server.csr
6、如何制作中文的CSR文件?
中文CSR文件,主要指企業(yè)名稱、部門,城市,省份等信息采用中文,通用名和國家代碼仍然必須是英文的,GeoTrust目前已經(jīng)全面支持中文的CSR,要制作中文的CSR,最簡單的辦法仍然是采用我們的在線CSR生成器: https://www.myssl.cn/openssl/createcsr.asp
如果希望自己通過Openssl工具來制作中文CSR就需要多費一些工夫了,下面詳細介紹一下采用Openssl命令行制作中文CSR的方法。
Openssl本身是可以支持UTF-8編碼來支持中文的,但是如果通過DOS命令行是無法輸入UTF-8的中文字符的,所以我們必須采用Opnessl.cnf配置文件的缺省值來實現(xiàn)中文字的輸入。采用一個文本編輯器,最好是支持utf-8字符的,我采用UltraEdit,打開Openssl.cnf文件,首先修改:
string_mask = utf8only這句話將強制字符的輸入采用UTF-8的編碼格式,然后修改缺省DN信息,錄入我們需要合中文字符,如下
commonName_default = www.myssl.cn 0.organizationName_default = 上海迅通科技有限公司 organizationalUnitName_default = IT 部門 stateOrProvinceName_default = 上海 localityName_default = 上海 countryName_default = CN然后將文件按utf-8,no bom的編碼格式保存,在Ultraedit下,請選擇“另存為”,格式為“UTF-8 - NO-BOM”。如果沒有可以支持UTF-8的編輯工具,也可以下載一個ICONV來做編碼轉(zhuǎn)換工作。
準備好openss.cnf文件后,輸入命令行:
openssl req -utf8 -config config.cnf -new -nodes -batch -keyout server.key -out server.csr
系統(tǒng)將自動生成CSR文件,保存在server.csr中。
CSR已經(jīng)做好,最后強調(diào),必須同時保存好server.csr和server.key2個文件,尤其是server.key一定丟失,將無法再使用這個證書。
JSSE模式。
常見的JKS文件制作,要采用Keytool工具,這個工具是JRE自帶的。通過命令行的方式輸入CSR信息,而且可以支持中文資料。
首先,生成一個新的jks文件,命令如下: keytool -genkey -alias tomcat -keyalg RSA -keystore c:\server.jks
輸入密鑰庫密碼:changeit 您的姓名是什么? [未知]: www.myssl.cn 您的組織單位名稱是什么? [未知]: Shanghai Fastcom Technology Co.,Ltd 您的組織名稱是什么? [未知]: It Dept. 您的市/縣/區(qū)或地點名稱是什么? [未知]: Shanghai 您的省/直轄市名稱是什么? [未知]: Shanghai 此單位的兩字母國家或地區(qū)代碼是什么? [未知]: CN CN=www.myssl.cn, OU="Shanghai Fastcom Technology Co.,Ltd", O=It Dept., L=Shanghai, ST=Shanghai, C=CN 正確嗎? (輸入“yes”或“no”) [否]: Y 為 <tomcat> 輸入密鑰密碼 (如果與密鑰庫密碼相同則返回):
說明: 輸入keystore密碼: 請輸入保護證書密鑰的密碼。 根據(jù)這個jks文件產(chǎn)生一個csr文件,輸入命令: 將證書內(nèi)容存為一個文件: 您會收到一封來自迅通誠信的郵件,證書內(nèi)容附在郵件中。如果證書是以附件的形式(Cert.cer)夾帶在郵件中,您就可以直接應用它。如果您的證書中以文本的方式存在郵件中,您就需要將郵件中的證書部分的內(nèi)容用Vi或Notepad存成一個純文本文件。不要將其存成Microsoft Word 或其它字處理軟件格式,并確定證書內(nèi)容中不含有空行和空格,文件名可以為server.cer。如下所示: Openssl模式 1、Resin4.0中采用resin.xml來配置SSL參數(shù),如下: 2、Resin3是在Resin.conf文件中配置SSL參數(shù),如下: 3、Resin2是在Resin.conf文件中配置SSL參數(shù),如下: JSSE模式 1、 請使用P7B在線轉(zhuǎn)換工具將server.cer轉(zhuǎn)換為P7B文件: 2. 然后運行命令,將CA簽好的證書文件cert.txt導入jks文件: 3. 如果是Resin4.0,修改resin.xml文件,如下 5、如果是Resin 3.x,修改resin.conf文件,如下 6、如果是Resin 2.x,修改resin.conf文件,如下 Openssl模式 和其他支持Openssl的服務器方式比較類似,只需要加入客戶證書根證書文件指認就可以了,增加配置如下: JSSE模式 如果采用JSSE模式的Resin,首先需要修改配置文件如下: 在配置中文件,我們是無法指定客戶證書根證書信息的,那么Resin是如何來信任客戶證書的呢?Resin其實是信任JRE缺省的JKS文件中的信任根證書,這個文件是jre/lib/security/cacerts,缺省的密碼是changeit,找到這個文件,并將客戶證書的根證書保存在clientroot.cer中,輸入如下命令: keytool -import -trustcacerts -keystore cacerts -alias root -file clientroot.cer
您的名字與姓氏是什么?請輸入域名,例如:www.myssl.cn
您的組織單位名稱是什么?請輸入單位名稱,如: Shanghai Fastcom Technology Co Ltd
您的組織名稱是什么?請輸入部門名稱,如: IT Dept
您所在的城市或區(qū)域名稱是什么?輸入城市名稱,如:Shanghai
您所在的州或省份名稱是什么?輸入省份名稱,如:Shanghai
該單位的兩字母國家代碼是什么?中國請輸入CN
CN=www.myssl.cn, OU=Shanghai Fastcom Technology Co Ltd, O=IT Dept, L=Shanghai, ST=Shanghai, C=CN 正確嗎?輸入 Y
輸入
keytool -certreq -alias tomcat -keystore server.jks -file server.csr
安裝證書文件
將保存好的server.cer文件和制作CSR時候生成的server.key一起復制到服務器上。 <resin xmlns="http://caucho.com/ns/resin"> <cluster id="http-tier"> <server id="a" address="192.168.1.12"> <http port="443"> <openssl> <certificate-file>server.cer</certificate-file> <certificate-key-file>server.key</certificate-key-file> <password>my-password</password> </openssl> </http> </server> ... </resin>
... <http port="443"> <openssl> <certificate-file>server.cer</certificate-file> <certificate-key-file>server.key</certificate-key-file> <password>my-password</password> </openssl> </http>
... <http port='443'> <ssl/> <certificate-file>server.cer</certificate-file> <certificate-key-file>server.key</certificate-key-file> <key-store-password>password</key-store-password> </http>
請用Notepad打開server.cer文件,將其中的全部內(nèi)容(包含-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----),將全部內(nèi)容復制到P7B在線轉(zhuǎn)換工具中的文本框中,然后點擊“合成P7B文件”。待合成成功后,下載文件,保存為cert.txt。
keytool -import -keystore server.jks -alias tomcat -file cert.txt<resin xmlns="http://caucho.com/ns/resin"> <cluster id=""> <server-default> <http port="443"> <jsse-ssl> <key-store-type>jks</key-store-type> <key-store-file>server.jks</key-store-file> <password>changeit</password> </jsse-ssl> </http> </server-default> ... </cluster> </resin>
<resin xmlns="http://caucho.com/ns/resin"> <server> <http port="443"> <jsse-ssl> <key-store-type>jks</key-store-type> <key-store-file>server.jks</key-store-file> <password>changeit</password> </jsse-ssl> </http> ... </http-server> </caucho.com>
<caucho.com> <http-server> <http port=8443> <ssl>true</ssl> <key-store-file>server.jks</key-store-file> <key-store-password>changeit</key-store-password> </http> ... </http-server> </caucho.com>
客戶證書認證 <ca-certificate-file>clientroot.cer</ca-certificate-file> <verify-client>required</verify-client>
<verify-client>required</verify-client>