USD $75/year
https://author.tucows.com
星期五, 3月 29, 2013
星期三, 3月 20, 2013
如何用自簽憑證測試 Tomcat / IIS SSL
首先是製作自簽憑證,最大眾化的工具是 Java keytool,指令如下(所有藍字的部份都可以依個別情況修改):
keytool -genkeypair -alias a -keystore store.pfx -storetype pkcs12 -keyalg RSA -dname "CN=www.xyz.com,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -storepass password
接著暫時先看 Tomcat 6.x,假設上述產出的 store.pfx 放在 conf 目錄下,再來是在 server.xml 設定以下段落:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="conf/store.pfx"
keystoreType="pkcs12" keystorePass="password"
truststoreFile="conf/store.pfx"
truststoreType="pkcs12" truststorePass="password"
clientAuth="false" sslProtocol="TLS" />
在用 IE 測試前,網際網路選項->內容->憑證->受信任的根憑證授權單位->匯入 store.pfx,接著開 Tomcat https 的網頁即可。
至於 IIS 7.5 則比較簡單,先在 IIS 管理員匯入伺服器憑證,當然還是 store.pfx,「允許匯出此憑證」需保持勾選;然後是 SSL 設定->繫結即可。
[2013/08/15 補充]
keytool -genkeypair -alias a -keystore store.pfx -storetype pkcs12 -keyalg RSA -dname "CN=www.xyz.com,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -storepass password
接著暫時先看 Tomcat 6.x,假設上述產出的 store.pfx 放在 conf 目錄下,再來是在 server.xml 設定以下段落:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="conf/store.pfx"
keystoreType="pkcs12" keystorePass="password"
truststoreFile="conf/store.pfx"
truststoreType="pkcs12" truststorePass="password"
clientAuth="false" sslProtocol="TLS" />
在用 IE 測試前,網際網路選項->內容->憑證->受信任的根憑證授權單位->匯入 store.pfx,接著開 Tomcat https 的網頁即可。
至於 IIS 7.5 則比較簡單,先在 IIS 管理員匯入伺服器憑證,當然還是 store.pfx,「允許匯出此憑證」需保持勾選;然後是 SSL 設定->繫結即可。
[2013/08/15 補充]
- 在 store 只有一個 key 的情況下,也就是上例,別名(alias)可有可無。
- CN= 的內容必須與提供外界訪問的網域名稱完全相符,在本機測試時,當然也可以是電腦名稱或是 localhost。
- -storetype pkcs12 如果省略的話,會是另一種 keytool 預設的格式,IIS 可能不支援,Tomcat 應該會支援,Jetty 只支援這種,不接受 pkcs12。
- keytool 預設格式的 store 即使附檔名一樣為 pfx,還是不能在 IE 匯入憑證,但我們可以用 keytool -exportcert 輕易地抽出憑證(不含金鑰)到另一個檔案,再匯入 IE。
Tomcat Connector and IIS 7.5
為了想在 IIS 環境下也能執行 Java Servlet,除了 JDK 與 Servlet Container 本身(我用的是 Tomcat)以外,在 IIS 也要部署一個 ISAPI filter。依官網(http://tomcat.apache.org/connectors-doc/reference/iis.html)的說明,雖然很詳盡了,但由於 IIS 變化太快的關係,到了 7.5 就不容易通,或者變成下載而非執行。以下是幾項特別值得注意的:
- 修改 Registry 通常是能免則免,所以我選擇編輯一個 isapi_redirect.properties 放在 isapi_redirect.dll 同一目錄下,對此目錄賦予 IUSR 以及 IIS_IUSRS 讀取、執行、列出資料夾內容等權限。
- 對於放 workers.properties 與 uriworkermap.properties 的目錄,賦予 IIS_IUSRS 讀取權限。
- 對於放 log 的目錄,賦予 IIS_IUSRS 讀取、寫入權限。
- 官網說明提到 isapi_redirect.dll 所在要設為虛擬目錄這件事不必做,但在 IIS 管理要新增「處理常式對應」,路徑是「/jakarta/isapi_redirect.dll」,執行檔當然是 isapi_redirect.dll 實際所在的完整路徑。另外,要對此「編輯功能權限」,勾選「執行」。
星期五, 3月 01, 2013
一般使用者權限即可安裝執行的 ActiveX
過去在網頁上部署 ActiveX,都需要電腦使用者具有管理權限才能安裝執行,但據說在 Vista 以後,就鬆綁到一般使用者權限即可。這對於我許多「MIS 管很嚴」的客戶來說,似乎是個蠻不錯(還是剛好相反?)的消息。做為一個 .NET based ActiveX 元件提供者,測試起來的確如此,但其中的小細節還有點多:
[2013/08/09 補充]
以上第五、六點要多做的事,其實源自於第四點整理的機碼不足。後來找到一個簡單的方法:
[2014/10/22 補充]
在 Windows Server 2012 摸索的經驗:
- 元件一定要經過簽署,而且這與封裝簽署是兩回事。
- 如果有被依賴的元件一同部署,不能放到系統目錄。
- 封裝資訊指定部署範圍為「使用者」。
- [.NET based ActiveX] 不能在封裝內的批次檔呼叫 RegAsm 註冊,要把寫入的所有機碼整理成一個檔案,由批次檔的命令去匯入。
- [.NET based ActiveX, Optional] 要請使用者事先加入「信任的網站」,或對「網際網路」安全性區域修改以下兩項:「允許不提示就執行從未使用過的 ActiveX 控制項」為「啟用」、「僅允許認可的網域使用 ActiveX 而不提示」為「停用」。
- [Optional] 若能在事前讓簽署元件的憑證位於「受信任的發行者」存放區,且上層憑證皆位於「中繼憑證授權單位」或「受信任的根憑證授權單位」,只要瀏覽器視該網站屬於網際網路(不需加入信任的網站),且安全性設定保持在預設值,元件就能不經提示直接下載安裝。
[2013/08/09 補充]
以上第五、六點要多做的事,其實源自於第四點整理的機碼不足。後來找到一個簡單的方法:
- 同上
- 同上
- 同上
- RegAsm /regfile:a.reg 將元件的註冊指令先匯出
- 修改 a.reg 的內容,指向 HKCR 的改成 HKCU
- RegAsm import a.reg
[2014/10/22 補充]
在 Windows Server 2012 摸索的經驗:
- 在伺服器上的瀏覽器限制較嚴格,如果能將網站列入「受信任」區域會好很多。
- 預設的 Administrator 首次開啟有 ActiveX 的網頁就是不會提示下載,當然也真的沒有下載。必須另外新增使用者,事後要不要將此人加入管理者群組都可以,反正後續的提示下載安裝 ActiveX 都正常了。
訂閱:
文章 (Atom)