簡介
本文檔介紹如何對Cisco AnyConnect安全移動客戶端、思科安全案頭(CSD)/思科主機掃描和無客戶端SSL VPN(WebVPN)上的Java 7問題進行故障排除。
附註:標示為調查的思科錯誤ID不限於所述症狀。如果您在Java 7上遇到問題,請確保將AnyConnect客戶端版本升級到最新客戶端版本或至少升級到Cisco Connection Online(CCO)上提供的3.1維護版本3。
一般疑難排解
運行Java驗證程式,以檢查使用的瀏覽器是否支援Java。如果正確啟用了Java,請檢視Java控制檯日誌以分析問題。
Windows
以下過程介紹了如何在Windows中啟用控制檯日誌:
- 開啟Windows控制面板,並搜尋Java。
- 按兩下Java(咖啡杯圖示)。 此時會顯示「Java控制面板」。
- 按一下Advanced頁籤。
- 展開Debugging,然後選擇Enable tracing和Enable logging。
- 展開Java控制檯,然後按一下Show console。
Mac
以下過程介紹了如何在Mac上啟用控制檯日誌:
- 開啟系統首選項,然後按兩下Java圖示(咖啡杯)。 此時會顯示「Java控制面板」。
- 按一下Advanced頁籤。
- 在Java控制檯下,按一下Show console。
- 在「調試」下,按一下啟用跟蹤和啟用日誌記錄。
特定故障排除
AnyConnect
對於AnyConnect相關問題,收集診斷AnyConnect報告(DART)日誌以及Java控制檯日誌。
Windows
思科錯誤ID CSCuc55720「IE在ASA上啟用3.1.1軟體包時與Java 7一起崩潰」是一個已知問題,其中在頭端執行WebLaunch並啟用AnyConnect 3.1時Internet Explorer崩潰。此錯誤已修正。
將AnyConnect和Java 7的某些版本與Java應用配合使用時,可能會遇到問題。如需更多資訊,請參閱Cisco錯誤ID CSCue48916,「Java App(s)Break when using AnyConnect 3.1.00495 or 3.1.02026 & Java v7」。
Java 7和IPv6套接字呼叫問題
如果AnyConnect即使在將Java Runtime Environment(JRE)升級到Java 7後仍無法連線,或者Java應用程式無法通過VPN隧道連線,請檢視Java控制檯日誌並查詢以下消息:
java.net.SocketException: Permission denied: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
這些日誌條目指示客戶端/應用程式進行IPv6呼叫。
此問題的一個解決方案是在乙太網介面卡和AnyConnect虛擬介面卡(VA)上禁用IPv6(如果未使用):
第二個解決方案是配置Java使其優先使用IPv4而非IPv6。將系統屬性「java.net.preferIPv4Stack」設定為「true」,如以下示例所示:
- 將系統屬性的代碼新增到Java代碼中(對於客戶編寫的Java應用程式):
System.setProperty("java.net.preferIPv4Stack" , "true");
- 從命令列為system屬性新增代碼:
-Djava.net.preferIPv4Stack=true
- 設定環境變數_JPI_VM_OPTIONS和_JAVA_OPTIONS以包含系統屬性:
-Djava.net.preferIPv4Stack=true
如需其他資訊,請參閱:
第三個解決方案是在Windows電腦上完全禁用IPv6;編輯此登錄檔項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters
有關其他資訊,請參閱如何在Windows中禁用IP第6版或其特定元件。
Java 7升級後的AnyConnect WebLaunch問題
Cisco JavaScript代碼以前將Sun作為Java供應商的值。但是,Oracle按照JDK7中的說明更改了該值:Java供應商屬性更改。此問題已由Cisco錯誤ID CSCub46241「AnyConnect weblaunch fails from Internet Explorer with Java 7」修復。
Mac
未報告任何問題。使用AnyConnect 3.1(使用WebLaunch/Safari/Mac 10.7.4/Java 7.10配置)進行的測試未顯示錯誤。
其他
Cisco AnyConnect上的Java 7應用問題
思科錯誤ID CSCue48916「Java App(s)Break when using AnyConnect 3.1.00495 or 3.1.02026 & Java v7」已失敗。初始調查顯示問題不是客戶端上的錯誤,而可能與Java虛擬機器(VM)配置相關。
以前,要在AnyConnect 3.1(2026)客戶端上使用Java 7應用,請取消選中IPv6虛擬介面卡設定。但是現在必須完成此過程中的所有步驟:
- 安裝AnyConnect版本3.1(2026)。
- 解除安裝Java 7。
- 重新開機。
- 安裝Java SE 6,更新38,可從Oracle Web站點獲得。
- 導航到Java 6控制面板設定,然後按一下Update頁籤以升級到最新版本的Java 7。
- 開啟命令提示符並輸入:
setx _JAVA_OPTIONS -Djava.net.preferIPv4Stack=true
- 使用AnyConnect登入,Java應用應該可以正常工作。
附註:此過程已使用Java 7更新9、10和11進行了測試。
CSD/Hostscan
對於CSD/Hostscan相關問題,請收集DART日誌以及Java控制檯日誌。
要獲取DART日誌,必須將CSD日誌記錄級別設定為ASA上的調試:
- 導覽至ASDM > Configuration > Remote Access VPN > Secure Desktop Manager > Global Settings。
- 在思科自適應安全裝置管理器(ASDM)上開啟CSD日誌記錄進行調試。
- 使用DART收集CSD/Hostscan日誌。
Windows
Hostscan容易發生與先前在Windows中對AnyConnect所描述的類似崩潰(思科錯誤ID CSCuc55720)。 Cisco錯誤ID CSCuc48299「IE with Java 7 crashes on HostScan Weblaunch」已解決hostscan問題。
Mac
CSD 3.5.x版和Java 7版的問題
在CSD 3.5.x中,所有WebVPN連線均失敗;其中包括AnyConnect Web啟動。Java控制檯日誌不會顯示任何問題:
Java Plug-in 10.10.2.12
Using JRE version 1.7.0_10-ea-b12 Java HotSpot(TM) 64-Bit Server VM
User home directory = /Users/rtpvpn
----------------------------------------------------
c: clear console window
f: finalize objects on finalization queue
g: garbage collect
h: display this help message
l: dump classloader list
m: print memory usage
o: trigger logging
q: hide console
r: reload policy configuration
s: dump system and deployment properties
t: dump thread list
v: dump thread stack
x: clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------
如果降級到JRE 6或將CSD升級到3.6.6020或更高版本,則Java控制檯日誌會顯示以下問題:
Java Plug-in 10.10.2.12
Using JRE version 1.7.0_10-ea-b12 Java HotSpot(TM) 64-Bit Server VM
User home directory = /Users/rtpvpn
----------------------------------------------------
c: clear console window
f: finalize objects on finalization queue
g: garbage collect
h: display this help message
l: dump classloader list
m: print memory usage
o: trigger logging
q: hide console
r: reload policy configuration
s: dump system and deployment properties
t: dump thread list
v: dump thread stack
x: clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------
CacheEntry[ https://rtpvpnoutbound6.cisco.com/CACHE/sdesktop/install/binaries/
instjava.jar ]: updateAvailable=false,lastModified=Wed Dec 31 19:00:00 EST
1969,length=105313
Fri Oct 19 18:12:20 EDT 2012 Downloaded
https://rtpvpnoutbound6.cisco.com/CACHE/sdesktop/hostscan/darwin_i386/cstub
to /var/folders/zq/w7l9gxks7512fsl4vk07v9nc0000gn/T/848638312.tmp/cstub
Fri Oct 19 18:12:20 EDT 2012 file signature verification
PASS: /var/folders/zq/w7l9gxks7512fsl4vk07v9nc0000gn/T/848638312.tmp/cstub
Fri Oct 19 18:12:20 EDT 2012 Spawned CSD stub.
解決方法是升級CSD或降級Java。因為Cisco建議您執行最新版本的CSD,所以您應該升級CSD,而不是降級Java,尤其是因為Mac上的Java降級可能會很困難。
Mac 10.8上WebLaunch的Chrome和Safari問題
預期會出現Chrome和Safari問題:
- Chrome是一種32位瀏覽器,不支援Java 7。
- Chrome從未成為WebLaunch的正式支援瀏覽器。
- Mac 10.8禁用了在Safari上使用Java 7,並且預設情況下未啟用Java的舊版本。
如果您已安裝Java 7,解決方案為:
提示:如果您尚未安裝Java或者您使用的是較舊版本的Java,則可能會在java.com上看到錯誤消息「Java blocked for this web site」(為此網站阻止了Java)。有關安裝Java更新的資訊,請參閱Apple支援論壇上的Java update available for OS X on 2013 2013。
Mac 10.9上WebLaunch的Safari問題
如果您在Mac 10.9上並且已啟用Java外掛(如Chrome和Safari with WebLaunch on Mac 10.8一節所述),WebLaunch可能會繼續失敗。所有Java小程式都會啟動,但瀏覽器只是繼續旋轉。如果Java日誌如一般故障排除一節中所述啟用,日誌會快速填充,如下所示:
at java.lang.Thread.run(Thread.java:744)
Mon Dec 16 16:00:17 EST 2013 Failed to download cstub
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
network: Created version ID: 1.7.0.45
在日誌中早期查詢此類條目:
Mon Dec 16 16:00:17 EST 2013 Downloaded https://rave.na.sage.com/CACHE/
sdesktop/hostscan/darwin_i386/manifest java.io.FileNotFoundException:
/Users/user1/.cisco/hostscan/bin/cstub (Operation not permitted) at
java.io.FileInputStream.open(Native Method)
這表示您遇到Cisco錯誤ID CSCuj02425,「如果禁用了Java不安全模式,則OSX 10.9上的WebLaunch將失敗。」 為了解決此問題,請修改Java首選項,以便Java可以在Safari的不安全模式下運行:
- 按一下「Preferences」。
- 按一下Manage Website Settings。
- 在安全頁籤中,選擇Java,並注意,預設情況下選擇了Allow。
- 將Allow更改為Unsafe Mode。
WebVPN
對於與Java相關的WebVPN問題,請收集此資料以進行故障排除:
測試設定可以加快解決速度。
Java 7 U51中的安全功能及其對WebVPN使用者的影響
最近宣佈的針對Java 7更新51(2014年1月)的更改已確定,預設安全滑塊需要代碼簽名和「許可權清單」屬性。總之,所有Java小程式都需要:
- 待簽名(Applet和Web Start應用程式)。
- 設定清單中的「許可權」屬性。
如果應用程式使用通過Web瀏覽器啟動的Java,則會受到影響。應用程式從Web瀏覽器外部正常運行的任何位置運行。這對於WevVPN意味著思科分發的所有客戶端外掛都可能受到影響。由於思科不維護或支援這些外掛,因此思科無法更改代碼簽名證書或applet以確保其符合這些限制。正確的解決方案是使用ASA上的臨時代碼簽名證書。ASA提供臨時代碼簽名證書以對Java小程式(用於Java重寫程式和外掛)進行簽名。 臨時證書使Java applet能夠執行預期功能,而不會出現警告消息。ASA管理員應在臨時證書過期之前將其替換為由受信任的證書頒發機構(CA)頒發的自己的代碼簽名證書。 如果這不是可行的選項,則解決方法是完成以下步驟:
- 可以在終端客戶端電腦的Java設定上使用「異常站點清單」功能,以便運行被安全設定阻止的應用程式。中介紹了執行此操作的步驟。
- 還可以降低「Java安全性」設定。此設定還設定在客戶端電腦的Java設定中,如下所示:
警告:使用這些變通方法仍會給你帶來一些錯誤,但Java不會像沒有變通方法時那樣阻止應用程式
Windows
據報告,啟動Java applet的應用程式在升級到Java 7後會對WebVPN進行故障轉移。此問題是由於Java重寫程式缺少安全雜湊演算法(SHA)-256支援造成的。已針對此問題提交了思科漏洞ID CSCud54080「SHA-256 support for webvpn Java rewriter」。
使用JRE7時,通過具有智慧隧道的門戶啟動Java applet的應用程式可能會失敗;這在64位系統中最常見。在捕獲中,請注意Java VM以明文形式傳送資料包,而不是通過智慧隧道連線到ASA。此問題已由Cisco錯誤ID CSCue17876「某些java applet不會在使用jre1.7的windows上透過智慧通道連線。」