国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Webservice 和 SSL 問題故障排除
Webservice 和 SSL 問題故障排除(傳輸級安全性)
問題描述
利用傳輸級安全性,可通過使用“安全套接字層”(Secure Sockets Layer,SSL)來保護客戶端應(yīng)用程序與 WebLogic 服務(wù)器之間的連接。SSL 通過允許兩個通過網(wǎng)絡(luò)連接的應(yīng)用程序驗證對方的身份以及對應(yīng)用程序間交換的數(shù)據(jù)進行加密,來提供安全的連接。身份驗證允許服務(wù)器和客戶端(可選)驗證網(wǎng)絡(luò)連接另一端的應(yīng)用程序的身份。加密使通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)只能被目標接收者理解。
編寫本文檔的目的是為了探討客戶在使用 WebService 和 SSL 時引發(fā)的大部分問題。如果尚未閱讀支持模式“理解和探查 SSL 問題”,請閱讀它
本文將討論單向 SSL 和雙向 SSL 中的多數(shù)常見問題。并將說明如何完成測試。使用的代碼示例來自:
WEBLOGIC_HOME\\samples\server\examples\src\examples\webservices\basic\javaclass。
快速鏈接
適宜的文檔
http://e-docs.bea.com/wls/docs81/webserv/securitytml
此文檔中的鏈接
通過單向 SSL 調(diào)用 Webservice準備工作如何進行?如何調(diào)試?客戶端出現(xiàn)了哪些問題?
通過雙向 SSL 調(diào)用 Webservice準備工作如何進行?如何調(diào)試?客戶端出現(xiàn)了哪些問題?
特定版本已知問題一般的已知問題
通過單向 SSL 調(diào)用 Webservice
準備工作
您需要確保服務(wù)器在監(jiān)聽 SSL 端口。
現(xiàn)在,我們將假定服務(wù)器有下列密鑰庫 (keystore):
java utils.ImportPrivateKey serverks weblogic keyserver weblogic  publicem  SMALBOIS02-keyer
受信任 CA 密鑰庫 (keystore) 定義如下:
keytool -import -trustcacerts -alias CA -file caem -keystore trustks -storepass weblogic
啟動 WebLogic 服務(wù)器并單擊鎖之后,您將獲得:
現(xiàn)在,我們將使用的文件是 ca.pem 和 public.pem。
CA.PEM 包含的證書顯示為“For VeriSign authorized testing only.No assurances (C)VS1997»
PUBLIC.PEM 包含 CA.PEM + SMALBOIS02-keyer(服務(wù)器證書)的公鑰-兩個連接在一起。
返回頁首。
如何進行?
設(shè)置起來很簡單。只需要指定一個 https url 來訪問 WSDL。還需要為 servicegen 定義“protocol="https”。例如:
<target name="ear">
<servicegen
destEar="D:/_wk/SupportPatterns/WLS/SSLWebServices/mydomain/applications/${ear_file}"
warName="${war_file}">
<service
javaClassComponents="examplesebservicesasicavaclass.HelloWorld"
targetNamespace="${namespace}"
serviceName="HelloWorld"
serviceURI="/HelloWorld"
generateTypes="True"
protocol="https"
expandMethods="True">
<client
packageName="examplesebservicesasicavaclass"
clientJarName="${client_jar_file}"
/>
</service>
然后,以下列方式訪問 WDSL:
<arg value="https://localhost:${port}/basic_javaclass/HelloWorld?WSDL"/>
如何調(diào)試?
需要將服務(wù)器配置為允許單向通訊。如果要確保情況正是如此,請使用 Web 瀏覽器,并通過 https 請求 WSDL。如果您可訪問該鏈接,而瀏覽器上卻未安裝客戶端證書,則您應(yīng)該能夠通過單向 SSL 訪問 Webservice 而不會出現(xiàn)任何問題。
如果 WebLogic 上正在運行 Web Service,您可先確保 SSL 端口已打開。然后,打開 WebLogic 控制臺,并檢查 SSL 設(shè)置:
轉(zhuǎn)到服務(wù)器的密鑰庫 (keystore) 和 SSL 選項卡
向下滾動該頁并顯示高級選項
Two Way Client Cert Behavior:Client Certs Not Requested 或 Client Certs Requested but not Enforced
上述這些設(shè)置將確保能夠在不提供客戶端證書的情況下建立 SSL 連接(在此種情況下,SSL 連接將是雙向 SSL 連接)。
如果想調(diào)試 SSL 層 (layer),則可在客戶端和服務(wù)器(如果也是在 WebLogic 上運行)上添加下列內(nèi)容:
java  -Dweblogi.security.SSL.verbose=true
調(diào)用客戶端 Webservice 時,可定義下列內(nèi)容:
1. 客戶端無信任 CA:在此種情況下,即使客戶端沒有信任密鑰庫 (keystore),也仍然會受到信任
通過使用 -Dweblogic.webservice.client.ssl.strictcertchecking=false
可實現(xiàn)這一點。此標志將指示您是否要對客戶端強制信任(即,它禁用嚴格的證書檢查)。
例如:
>java  -Dweblogic.security.SSL.verbose=true
-Dweblogic.webservic.celient.ssl.strictcertchecking=false examples.webservices.basic.javaclass.SSLClient
該標志將起作用,并且Dweblogic.security.SSL.verbose 將顯示:
<23 mars 2005 16 h 56 TU>
<Debug>
<TLS>
<000000>
<Cannot complete the certificate chain: No trusted cert found>
2. 客戶端的受信任 CA
要為客戶端指定受信任 CA,必須同時指定命令行參數(shù)
-Dweblogic.webservic.celient.ssl.strictcertchecking=true 和 -Dweblogic.webservice.client.ssl.trustedcertfile,后者將指定受信任的 CA。
例如:
>java
-Dweblogic.security.SSL.verbose=true
-Dweblogic.webservice.client.ssl.trustedcertfile=
D:\_wk\SupportPatterns\WLS\SSLWebServices\mydomain\caem -Dweblogic.webservice.client.ssl.strictcertchecking=
true examples.webservices.basic.javaclass.SSLClient
該參數(shù)將如期指定客戶端受信任的 CA。
返回頁首。
客戶端出現(xiàn)了哪些問題?
如果您在嘗試通過單向 SSL 與客戶端連接時遇到一些問題,請打開
weblogic.security.SSL.verbose,然后您可能會注意到下列內(nèi)容:
問題 1:javax.net.ssl.SSLKeyException:FATAL Alert:BAD_CERTIFICATE
<23 mars 2005 17 h 00 TU>
<Debug>
<TLS>
<000000>
<Cannot complete the certificate chain:No trusted cert found>
<23 mars 2005 17 h 00 TU> <Debug>
<TLS>
<000000>
<NEW ALERT with Severity:FATAL, Type:42
解決辦法:
您可能有一個不指定任何信任 CA 的 Webservice 客戶端。您可使用
-Dweblogic.webservice.client.tslrustedcertfile 指定一個信任 CA,也可使用 -Dweblogic.webservice.client.ssl.ttrictcertchecking=false 對客戶端禁用信任
問題 2: validationCallback:validateErr = 16
<29 mars 2005 11 h 56 BST>
<Debug> <TLS> <000000> <HANDSHAKEMESSAGE:Certificate>
<29 mars 2005 11 h 56 BST>
<Debug> <TLS> <000000> <validationCallback:validateErr = 16>
<29 mars 2005 11 h 56 BST>
<Debug> <TLS> <000000>
<Required peer certificates not supplied by peer>
解決辦法:服務(wù)器請求客戶端證書,而您尚未按客戶端提供證書。如果您試圖只建立單向 SSL 連接,則請確保將服務(wù)器配置為執(zhí)行此項操作(不強制您提供證書)
返回頁首。
通過雙向 SSL 調(diào)用 Webservices
我們將在此處預演雙向 SSL 配置。
準備工作
為了準備雙向 SSL,請使用下列客戶端證書:
在瀏覽器中將私鑰從 pfx 文件中導出并將其轉(zhuǎn)換成帶有 openssl 的 pem 文件(例如 openssl pkcs12 -in smalbois.pfx -nodes -nocerts -out private.key)。
公鑰 (pub.pem) 和 2 個 CA(ca_int.pem/ca_root.pem)也是用瀏覽器導出的。
返回頁首。
如何進行?
以下是我們一直在使用的示例。
import weblogic.webservice.client.SSLAdapterFactory;
import weblogic.webservice.client.WLSSLAdapter;
import javao.*;
public static void main(String[] argv)
throws Exception
{
SSLAdapterFactory factory = SSLAdapterFactoryetDefaultFactory();
WLSSLAdapter adapter = (WLSSLAdapter) factoryetSSLAdapter();
System.out.println("Loading client certs from "+argv[0]);
// clientCredentialFile stores in PEM format the public key and
// all the CAs associated with it + then the private key. All this in // a concatenated manner
FileInputStream clientCredentialFile  = new FileInputStream ("D:/_wk/SupportPatterns/WLS/SSLWebServices/mydomain/publicCAprivkeyem");
// private key password
String pwd = "canpass";
adapteroadLocalIdentity(clientCredentialFile, pwdoCharArray());
adapter.setVerbose(true);
adapter.setTrustedCertificatesFile("D:/_wk/SupportPatterns/WLS/SSLWebServices/mydomain/caem");
adapter.setStrictChecking(false);
factory.setDefaultAdapter(adapter);
factory.setUseDefaultAdapter(true);
HelloWorld_Impl ws = new HelloWorld_Impl(argv[0]);
HelloWorldPort port  = wsetHelloWorldPort();
String returnVal = portayHello(4, "Sebastien");
Systemutrintln("The client passed the Values 4 and A to the
webservice, and got back this result:");
System.outrintln(returnVal);
}
文件 publicCAprivkey.pem 包含 public.pem + ca_int.pem + ca_root.pem 和 private.pem 文件(所有文件都首尾相連)。為 setTrustedCertificatesFile 指定的 pem 文件是服務(wù)器的 CA(請參閱上文中有關(guān)該文件的解釋)。
返回頁首。
如何調(diào)試?
需要將服務(wù)器配置為允許雙向通訊。如果要確保情況正是如此,請使用 Web 瀏覽器,并通過 https 請求 WSDL。請求頁面,并查看是否可以建立 SSL 連接(如果它顯示 WSDL)。如果可以建立 SSL 連接并且您的瀏覽器中有客戶端證書,請詢問服務(wù)器管理員是否還要將 SSL 配置設(shè)為要求客戶端證書。
要確保在 WebLogic 上進行此項設(shè)置,請轉(zhuǎn)到控制臺:
轉(zhuǎn)到服務(wù)器的密鑰庫 (keystore) 和 SSL 選項卡
向下滾動該頁并顯示高級選項
Two Way Client Cert Behavior:Client Certs Requested and Enforced 或 Client Certs Requested and not Enforced
“Client Certs Requested and Enforced”將確保在提供“客戶端證書”的情況下可以建立 SSL 連接(雙向 SSL 連接)。
“Client Certs Requested and not Enforced”讓您在不使用客戶端證書的情況下仍然可以建立單向 SSL 連接。
如果想調(diào)試 SSL 層 (layer),則可在客戶端和服務(wù)器(如果也是在 WebLogic 上運行)上添加下列內(nèi)容:
java  -Dweblogic.security.SSL.verbose=truesetrue
返回頁首。
客戶端出現(xiàn)了哪些問題?
客戶運行與上面示例類似的示例時,可能會遇到以下問題:
問題 1:CERT_CHAIN_INCOMPLETE
<25 mars 2005 10 h 38 TU> <Debug> <TLS> <000000> <Trust failure (68): CERT_CHAIN_INCOMPLETE>
<25 mars 2005 10 h 38 TU> <Debug> <TLS> <000000> <NEW ALERT with Severity:FATAL, Type:40
java.lang.Exception:New alert stack
解決辦法:
包含證書的文件 clientCredentialFile 沒有所需的所有鏈路。請確保公鑰首先位于該文件中,而且確保具有私鑰的 CA 跟在后面。
問題 2:Identity Assertion Failed, Unsupported Token Type:X09
[java] java.rmi.RemoteException:SOAP Fault:javax.xml.rpc.soap.SOAPFaultException:[Security:090380]Identity Assertion Failed, Unsupported Token Type:X09
解決辦法:
需要對身份聲明進行配置。
執(zhí)行方法如下:
打開 WebLogic 控制臺
- Security
- Realms
- Providers
- Authentication
- Select DefaultIdentityAsserter
- Select X509 for the types
然后轉(zhuǎn)到詳細信息(列表)
- Select Use Default User Name Mapper
- Default User Name Mapper Attribute Type:例如 CN
- Default User Name Mapper Attribute Delimiter:“”
然后應(yīng)用配置。現(xiàn)在,重新啟動服務(wù)器。
問題 3:Use Default User Name Mapper
[java] Caused by: javax.xml.rpc.soap.SOAPFaultException: [Security:090377]Identity Assertion Failed, weblogic.security.spi.IdentityAssertionException: [Security:090243]user Name Mapper class not configured - cannot assert identity
解決辦法:
這是未在控制臺中選擇的 Use Default User Name Mapper 的問題。
要對其進行配置,請檢查如下內(nèi)容:
打開 WebLogic 控制臺
Security
Realms
Providers
Authentication
Select DefaultIdentityAsserter
Select X509 for the types
然后轉(zhuǎn)到詳細信息(列表)
Select Use Default User Name Mapper
Default User Name Mapper Attribute Type:例如 CN
Default User Name Mapper Attribute Delimiter:“”
然后應(yīng)用配置?,F(xiàn)在,重新啟動服務(wù)器。
問題 4:Authentication Failed:User SMALBOIS02 javax.security.auth.login.LoginException
[java] javax.rmi.RemoteException: SOAP Fault:javax.xml.rpc.soap.SOAPFaultException: [Security:090304]Authentication Failed: User SMALBOIS02 javax.security.auth.login.LoginException: [Security:090300]Identity Assertion Failed: User SMALBOIS02 does not exist
解決辦法:
您使用的是雙向 SSL,服務(wù)器已識別您的客戶端證書、使用了身份聲明,只是無法識別 Realm 中的用戶。檢查用戶是否存在于您使用的 Realm 中(例如,內(nèi)嵌 LDAP 或任何外部用戶儲存庫 ldap 等…)
問題 5:BAD_CERTIFICATE
客戶端顯示:
[java] <25 mars 2005 14 h 58 TU> <Debug> <TLS> <000000> <NEW ALERT: comerticomlsecordlert.Alert@1cf7491 Severity: 2 Type: 42
[java] <25 mars 2005 14 h 58 TU> <Warning> <Security> <BEA-090482> <BAD_CERTIFICATE alert was received from localhost - 127. Check the peer to determine why it rejected the certificate chain (trusted CA configuration, hostname verification). SSL debug tracing may be required to determine the exact reason the certificate was rejected.>
[java] <25 mars 2005 14 h 58 TU> <Debug> <TLS> <000000> <close(): 24374386>
服務(wù)器端顯示:
<25 mars 2005 14 h 58 TU> <Warning> <Security> <BEA-090478> <Certificate chain received from localhost - 127 was not signed properly causing SSL handshake failure.>
<25 mars 2005 14 h 58 TU> <Debug> <TLS> <000000> <Validation error = 1>
<25 mars 2005 14 h 58 TU> <Debug> <TLS> <000000> <Certificate chain is invalid>
<25 mars 2005 14 h 58 TU> <Debug> <TLS> <000000> <User defined JSSE trustmanagers not allowed to override>
<25 mars 2005 14 h 58 TU> <Debug> <TLS> <000000> <SSLTrustValidator returns: 65>
<25 mars 2005 14 h 58 TU> <Debug> <TLS> <000000> <Trust failure (65):   CERT_CHAIN_INVALID>
解決辦法:
clientCredentialFile 中證書 CA 的順序錯誤。如果將中間 CA 放置在根 CA 之后,則可能出現(xiàn)這種情況。
問題 6: CERT_CHAIN_INCOMPLETE CERT_CHAIN_UNTRUSTED
<25 mars 2005 15 h 10 TU> <Debug> <TLS> <000000> <SSLTrustValidator returns: 84>
<25 mars 2005 15 h 10 TU> <Debug> <TLS> <000000> <Trust failure (84):   CERT_CHAIN_INCOMPLETE CERT_CHAIN_UNTRUSTED>
解決辦法:
受信任的存儲可能不正確。請使用諸如 openSSL 之類的工具來驗證鏈路。
返回頁首。
特定版本已知問題
WLS 8 SP3 上的一些已知問題:
[java] java.net.UnknownHostException: null
[java]     at java.net.PlainSocketImplonnect(PlainSocketImplava:153)
[java]     at java.net.Socketonnect(Socketava:452)
[java]     at java.net.Socketonnect(Socketava:402)
[java]     at java.net.Socket.<init>(Socketava:309)
[java] java.rmi.RemoteException: SOAP
Fault:javax.xml.rpc.soap.SOAPFaultException: Failed to send request
[java] Detail:
[java] <detail>
[java]     at java.net.Socket.<init>(Socketava:124)
[java]     at java.netsl.SSLSocket.<init>(DashoA6275)
[java]  <bea_fault:stacktrace
xmlns:bea_fault="http://wwweaom/servers/wls70/webservice/fault/1">
javaet.UnknownHostException: null
解決辦法:
應(yīng)用修補程序 CR197698_810sp3ar-這只是一個客戶端修補程序
WLS8SP2/SP3/SP4 上的已知問題-SSL CLOSE_WAIT socket 上的 WebService,socket 泄露和明顯的內(nèi)存泄露
服務(wù)器讓 SOAP 通過 HTTPS 調(diào)用 Sun One Identity Server 時的 socket 泄露。Netstat 輸出在每次調(diào)用后顯示“空閑”socket 增加。每次調(diào)用后,下列警報都被記錄到 WLS 日志中:
<Debug> <TLS> <000000> <NEW ALERT:
comerticomlsecordlert.Alert@2b7bd9 Severity: 1 Type: 0
java.lang.Throwable: Stack trace
at weblogic.security.utils.SSLSetupebug(SSLSetupava:265)
at com.certicom.tls.record.alert.Alert.<init>(Unknown Source)
at com.certicom.tls.record.alert.
AlertHandlerandleAlertMessages(Unknown Source)
at com.certicom.tls.record.ReadHandlernterpretContent(Unknown Source)
at com.certicom.tls.record.ReadHandlereadRecord(Unknown Source)
at com.certicom.tls.record.ReadHandleread(Unknown Source)
at java.io.BufferedInputStream.fill(BufferedInputStreamava:183)
at java.io.BufferedInputStream.read1(BufferedInputStreamava:222)
at java.io.BufferedInputStream.read(BufferedInputStreamava:280)
at java.io.FilterInputStream.read(FilterInputStreamava:111)
at java.io.FilterInputStream.read(FilterInputStreamava:90)
at com.sun.xml.messaging.saaj.client.p2p.
HttpSOAPConnection.readFully(HttpSOAPConnectionava:604)
解決辦法:
該問題稱為 CR211853 - WLS 8 SP3-服務(wù)器讓 soap 通過 https 調(diào)用 Sun One Identity Server 時的 socket 泄露。
可使用 8SP2/8SP3/81SP4 修補程序-請與 BEA 支持部門聯(lián)系
8SP3 上可導致“內(nèi)存”泄露的已知問題
WLS 8 SP3-HTTPSClient 內(nèi)存泄露
解決辦法:
CR214423-可使用 8SP3 修補程序,請與 BEA 支持部門聯(lián)系
一般的已知問題
您可定期查看您的 WLS 版本的“發(fā)行說明”以獲得 Service Pack 中的“已知問題”或“已解決的問題”的詳細信息,而且還可瀏覽與 Webservice 有關(guān)的問題。方便起見,下面提供了這些發(fā)行說明的鏈接:
WLS 8 Release Notes (English)WLS 7 Release Notes (English)WLS 6 Release Notes (English)
搜索還將返回“發(fā)行說明”,以及其它“支持解決方法”和與 CR 相關(guān)的信息(在需要更多幫助?中說明)。如果客戶簽訂了技術(shù)支持合同,則可以登錄http://support.bea.com/,登錄后會看到為 Solutions 和 Bug Central 提供的 Browse portlet,可在其中按產(chǎn)品版本瀏覽最新提供的 CR。
需要更多幫助?
如果您已經(jīng)理解這個模式,但仍需要其它幫助,您可以: 在http://support.bea.com/上查詢 AskBEA(例如,使用“webservices and SSL”),以發(fā)現(xiàn)其它已發(fā)布的解決辦法。技術(shù)支持合同客戶:確保已經(jīng)登錄,可以訪問提供的與 CR 有關(guān)的信息。 在http://newsgroups.bea.com/ 上,向 BEA 的某個新聞組提出更詳細具體的問題。
如果這還不能解決您的問題,并且您擁有有效的技術(shù)支持合同,您可以通過登錄以下網(wǎng)站來打開支持案例:http://support.bea.com/。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java程序員:怎樣保證Java Web 應(yīng)用安全以及微服務(wù)架構(gòu)的認證?
求助delphi實現(xiàn)ssl驗證客戶端證書
如何保障物聯(lián)網(wǎng)平臺的安全性與健壯性
android mosquitto客戶端使用SSL功能的具體操作總結(jié)(android mqtt ssl 加密)
JDK安全證書的一個錯誤消息 No subject alternative names present的解決辦法
在 Java 客戶端中使用 SSL 身份驗證
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服