2015-10-05 84 views
1

我無法讓Jarsigner使用HTTPS代理。對於我的系統,我在/ etc/sysconfig/proxy中配置了http & https代理。我甚至在Java控制中添加了代理。Java Jarsigner不使用提供的代理

與wget的檢查和代理做的工作:

[email protected]:~/workspace/myApp> wget  https://timestamp.geotrust.com/tsa 
--2015-10-05 16:06:30-- https://timestamp.geotrust.com/tsa 
Resolving proxy.spacetec.no... 100.11.4.6 
Connecting to proxy.spacetec.no|100.11.4.6|:3128... connected. 
Proxy request sent, awaiting response... 404 Not Found 
2015-10-05 16:06:31 ERROR 404: Not Found. 

使用的jarsigner不使用所提供的代理:

/usr/java/jdk1.7.0_80/bin/jarsigner -J-Dhttps.proxyHost=http://proxy.company.com -J-Dhttps.proxyPort=3128 -keystore /home/user/keystore.p12 -storepass myStorePass -storetype pkcs12 -tsa https://timestamp.geotrust.com/tsa workspace/myApp/target/myApp-1.0.0-SNAPSHOT.jar alias 

jarsigner: unable to sign jar: no response from the Timestamping Authority. When connecting from behind a firewall an HTTP or HTTPS proxy may need to be specified. Supply the following options to jarsigner: 
    -J-Dhttp.proxyHost=<hostname> 
    -J-Dhttp.proxyPort=<portnumber> 
or 
    -J-Dhttps.proxyHost=<hostname> 
    -J-Dhttps.proxyPort=<portnumber> 

那麼,爲什麼正在我的系統上的代理,而不是使用Java ?我已經嘗試了jdk1.7.0_80和jdk1.8.0_60

jarsigner使用RFC 3161中定義的時間戳協議(TSP)與TSA進行通信。該協議基本上假定TSA上的偵聽器進程可以接受TSA消息定義良好的端口(IP端口號318)。

難道我的代理服務器不會與TSP的此端口通信嗎?

+0

刪除'-J-Dhttps.proxyHost = HTTP://proxy.company.com -J-Dhttps.proxyPort = 3128'和嘗試再次。 –

+0

也許是因爲URL https:// timestamp.geotrust.com/tsa'返回了一個404錯誤。 – SubOptimal

+0

我嘗試過並且沒有沒有-J-Dhttps.proxy *,並且Jarsigner仍然告訴我使用這些設置,因爲它無法從TSA獲得響應。不管結果如何,仍然可以看到wget正在使用代理。 TSA的URL確實會返回一個HTTP 404錯誤,但是在jarsigner後面使用的是端口318上的此URL的TimeStamp協議 – DJViking

回答

3

刪除HTTP://從代理主機修復了這個問題

-J-Dhttps.proxyHost=proxy.company.com -J-Dhttps.proxyPort=3128 
+0

此外,如果您的代理需要身份驗證,請另外添加:'-J-Dhttp.proxyUser = -J-Dhttp.proxyPassword = ' – sujit