為最佳JSP伺服器Resin加上SSL認證

火星人 @ 2014-03-03 , reply:0


為最佳JSP伺服器Resin加上SSL認證

Resin主要是作為WEB伺服器的jsp/servlets運行平台。它支持許多WEB伺服器軟體,而且是完全免費的,並提供了對SUN的J2EE的支持,這要比其它相關的java和javascript開發和運行平台要好的多,而且速度非常快,並提供伺服器端直接開發、編譯和運行。因此,Resin受到了許多應用JSP的WEB站點的支持。

對於任何一種WEB站點來說,不管使用何種方式的開發平台,運行后最關鍵的問題之一就是解決伺服器與用戶之間的安全問題。而對於WEB站點與用戶會話過程中數據的機密性保護,目前最好的解決方式主要是使用SSL技術來進行。由於Resin具有的上述優點使得它越來越受歡迎,使用它的WEB站點也就越來越多。

但是,通常狀態下,Resin並不對SSL請求做出任何的回應。如果我們需要使用SSL來增加站點與用戶之間的數據傳輸的安全性,我們就必需經過一系列的操作來讓Resin提供對SSL加密的支持。

一、 在WEB伺服器中使用OpenSSL套件

1、安裝OpenSSL

想要Resin可以響應SSL請求,我們就必需保證WEB伺服器上已經安裝好了相關的SSL套件。對於中小企業來說,開源免費的OpenSSL提供與SSL相同的認證功能。

OpenSSL的Linux版本可以在www.openssl.org網站上下載。現在它的最新版本是OpenSSL 0.9.8j。
Resin通過它的libexec/libresinssl.so JNI庫文件提供對OpenSSL的支持。如果是在類Linux系統下使用OpenSSL,在安裝時可以通過下列命令將它安裝到指定的位置:
./configure --with-openssl=/usr/local/ssl


如果我們是在Windows系統中使用Resin,那麼,我們同樣需要在此操作系統下先安裝好OpenSSL。Windows下的OpenSSL在www.slproweb.com/products/Win32OpenSSL.html下載,它的最新安裝文件是Win32OpenSSL-0_9_8j.exe,其大小為7MB左右。

在Windows系統下,Resin的resinssl.dll文件中包含提供對OpenSSL支持的代碼。(在Resin3.0以前的版本是通過resin.dll文件提供支持的。)因此,在Windows系統下只需要安裝好OpenSSL就可以讓Resin使用它了。OpenSSL在Windows系統下很容易安裝,就如同安裝其它的應用程序一樣簡單。

不過,在Windows系統下安裝完OpenSSL后,還應當將一些需要的DLL文件複製到Resin的根目錄當中。現在假設Resin安裝在c:\resin-3.2.1目錄,OpenSSL安裝在c:\Program Files\GnuWin32目錄。現在打開系統開始菜單的「運行」對話框,在運行框中輸入CMD命令,回車後進入命令行終端界面。然後在命令行終端下就可以通過下列所示的命令將OpenSSL安裝目錄下的相關文件複製到Resin的根目錄下:
cd resin-3.2.1
copy c:\Program Files\GnuWin32\bin\libssl32.dll c:\resin-3.2.1\libssl32.dll
copy c:\Program Files\GnuWin32\bin\libeay32.dll c:\resin-3.2.1\libeay32.dll

2、生成SSL認證私鑰

SSL認證的密鑰由OpenSSL來生成,生成后的密鑰應當保存到相應的Resin目錄中。因此,在生成密鑰前,我們可以在Resin根目錄中創建一個keys子目錄用來保存將要創建的密鑰。在類Linux系統下,我們可以通過下列方式來創建keys目錄:
cd /resin
mkdir keys

在Windows系統下,我們可以在資源管理器中直接在Resin根目錄下創建一個新文件夾,並命名為keys即可。
在生成密鑰時,OpenSSL會根據其配置文件中設置的內容來生成。在類Linux系統下,這個預設的配置文件可能在usr/ssl/openssl.cnf或/usr/share/ssl/openssl.cnf下。而Windows系統中不存在這樣的文件。

當然,我們還可以自己創建一個相應的配置文件保存到Resin/keys/目錄下。這樣,在創建密鑰時,OpenSSL也會根據這個配置文件中的內容來創建,而且,在創建密鑰時不會要求我們根據提示輸入預設的相關信息了。

下面是一個openssl.cnf配置文件的相關內容實例:
[ req ]
default_bits = 1024  #在這裡填入加密鍵的預設位數
distinguished_name = req的名稱
[ req_distinguished_name ]
C = 在這裡填入國家的代碼,例如CN,代表中國
C_default =
ST = 這裡填寫州或省名稱
ST_default =
L = 城市
L_default =
O = 企業或機構名稱
O_default =
OU = 組織中某個部門的名稱,例如市場部
OU_default =
CN = 我們的網站域名,必需是全名,例如www.myweb.com
CN_default =
emailAddress = 聯繫的E-Mail郵箱地址
emailAddress_default =

完成OpenSSL配置文件的相關設置后,我們就可以開始為SSL認證創建一個私鑰。在WEB伺服器上創建私鑰時,會要求我們輸入相應的密碼,這個密碼將會在我們使用創建的私鑰時要求被輸入。因此要牢記這個密碼並妥善地保管它。我們還必需將這個密碼加入到Resin的配置文件當中。

在類Linux系統下創建私鑰時,私鑰的文件名可以由我們自己決定,可以通過下列所示命令來完成:
openssl genrsa -des3 -out myprikey.key 1024
在Windows系統下創建私鑰。得先進入命令行終端界面,然後用CD命令切換到OpenSSL安裝目錄,再用下列命令產生私鑰;
c:\Program Files\GnuWin32\bin\openssl.exe  genrsa -des3 -out myprikey.key 1024
《解決方案》

二、 創建或申請SSL證書:

為了能夠加密與用戶的會話數據,我們還必需為SSL認證創建或申請一個公鑰證書。這個公鑰證書在使用時會由Resin發送給用戶的瀏覽器,以便瀏覽器能夠加密其發送的數據。公鑰證書可以由OPENSSL產生一個自簽名證書,也可以到第三方SSL證書頒發機構申請一個公鑰證書。要注意的是,自簽名證書將不能被其瀏覽器所承認。

1、創建一個自簽名證書

當我們只是用來測試WEB伺服器的SSL安全連接,或者只是作為企業遠程辦公之用時,那麼創建一個自簽名證書將會為我們節省一筆小錢。但是,對於這樣的自簽證書,WEB瀏覽器是不會承認的,還會為此彈出一個警告框來提醒用戶這個證書不是一個公認的SSL證書。不過,用戶瀏覽器與WEB伺服器之間的會話數據仍然是被SSL加密了的。

在類Linux系統下創建自簽名證書,可以使用下列命令來完成:
openssl req -config ./openssl.cnf -new -key myprikey.key  -x509 -out myself.crt
在Windows系統下創建自簽名證書,在字元終端用CD命令進入OpenSSL安裝目錄后,可以通過下列命令完成:
c:\Program Files\GnuWin32\bin\openssl.exe req -config ./openssl.cnf  -new -key myprikey.key -x509 -out myself.crt
其中,自簽名證書的名稱可以由我們自己決定,例在本例中為myself.crt,而「-key」參數后帶的鍵文件是在上面我們創建的私鑰文件,而命令中的「./openssl.cnf」表示當前目錄下的OpenSSL的配置文件。

如果我們沒有按前文所述方式生成一個OpenSSL配置文件,或者沒有修改此配置文件中的缺少配置值,那麼在創建過程中會要求我們提供一些基本的與WEB伺服器相關的身份資料,例如企業名稱和網站域名等信息。

2、創建一個證書請求文件

如果要使用第三方證書頒發機構上的證書,那麼就必需先創建一個證書請求文件(CSR)。這個證書請求文件中包含有證書的公鑰、企業名稱、加密位數、地址和網站域名等信息。

當我們在第三方證書頒發機構上申請證書時,就會要求我們提交這個證書請求文件,然後,證書頒發機構才能將SSL證書頒發給我們。現在提供SSL證書的機構有許多,例如VeriSign公司就是其中最著名的代表。在生成證書請求文件時一定要注意,我們使用什麼樣的WEB伺服器軟體,就必需生成與它相兼容的證書請求文件,這樣,SSL證書頒發機構頒發給我們的證書才能在此WEB伺服器下使用。

在Linux系統下生成證書請求文件,可以使用下列命令達到目的:
openssl req -new -config ./openssl.cnf -key myprikey.key  -out myprikey.csr
在Windows系統下生成證書請求文件,在命令行界面中通過CD命令進入OpenSSL安裝目錄后,通過下列命令來完成證書請求文件的生成:
c:\Program Files\GnuWin32\bin\openssl.exe req -new -config ./openssl.cnf  -key myprikey.key –out myprikey.csr
證書請求文件的文件名可以由我們自己來決定,在本文中為myprikey.csr。在生成證書請求文件過程中會要求我們輸入一些與WEB伺服器身份相關的信息,例如網站域名和企業名稱等。我們必需按要求如實填寫。

當我們成功註冊,並支付相應的年使用費之後,這些證書頒發機構就會將SSL證書發送到我們填寫的電子郵箱當中。
《解決方案》

三、 配置Resin使用私鑰和SSL證書

要想Resin能夠使用SSL認證,我們還必需對其配置文件resin.conf做相應的設置。具體要配置的內容包括:
...


keys/ myself.crt
keys/ myprikey.key
mypassword



其中,中的內容表示SSL連接使用的默認埠號,如果沒有特別要求,可以保持默認。和之間的內容填入Resin可以使用的SSL認證公鑰,在這裡為myself.crt。和之間的內容填入Resin可以使用的私鑰,在本文中為myprikey.key。至於和之間就是填入我們在創建私鑰時設置的密碼。

四、 測試Resin的SSL加密連接

當我們配置好Resin的SSL認證后,我們還可以通過一些方式來檢驗我們的配置是否正確。
在Windows系統下,我們就可以通過在WEB瀏覽器地址欄中輸入https://URL(企業網站的域名)的方式,來驗證WEB伺服器是否對這樣的URL地址做出正確響應。如果返回正常的內容,並且在WEB瀏覽器地址欄中顯示出一個掛鎖的標誌,那麼,Resin的SSL配置就算成功了。

在Linux系統下,除了可以上述方式來檢驗外,還可以通過下列方式來驗證:
openssl s_client -connect www.myweb.com:443 –prexit
另外,我們還可以通過下列的JSP腳本來快速驗證Resin是否對SSL做出反應:
Secure?
經過上述的檢驗操作后,如果都能得到WEB伺服器的正確響應,那麼就說明Resin已經能夠提供對SSL技術的支持了。

也就是說,當用戶通過WEB瀏覽器向WEB伺服器發送一個SSL請求時,Resin就會為這個WEB瀏覽器提供SSL認證的公共密鑰,然後,這個WEB瀏覽器就可以使用這個公共密鑰來加密數據,而Resin將使用WEB伺服器的SSL私鑰對加密的數據進行解密。



[火星人 via ] 為最佳JSP伺服器Resin加上SSL認證已經有181次圍觀

http://www.coctec.com/docs/service/show-post-2673.html