gpt4 book ai didi

java - waitfor 任务如何忽略 SSL 证书问题?

转载 作者:行者123 更新时间:2023-11-30 06:27:33 25 4
gpt4 key购买 nike

考虑到我的应用程序在本地主机上运行,​​下面的 Ant 代码片段在我的本地环境中运行良好:

<waitfor maxwait="120" maxwaitunit="second" checkevery="1">
<and>
<http url="https://localhost:${env.https.port}/${env.context.path}/${url}"/>
</and>
</waitfor>

但它在 Linux 测试服务器上不起作用。即使应用程序在本地主机上运行,​​它也会等待 2 分钟。我使用 Ant echo 任务并在服务器上运行“curl”来验证创建的 url 是否有效。

当我运行时在服务器上:

curl https://localhost:8080/live/index.html 

我收到认证错误。但是当我运行时(忽略证书):

curl -k https://localhost:8080/live/index.html 

效果很好。

我想知道 Ant 脚本是否也因为认证错误而无法工作,如果是这样,我该如何修复它?如果没有,对 Ant 脚本有什么建议吗?

最佳答案

这是一个可能的起点。这完成了 curl -k 的一些工作,但是是在 Ant 内部进行的。由于这会禁用证书检查,因此应在安全的环境中谨慎使用!您没有说明您遇到了哪个证书错误,但如果需要,您可以扩展以下内容。

<script language="javascript"><![CDATA[

// Create a trust manager that does not validate certificate chains

var TrustManagerInterface = Java.type( "javax.net.ssl.X509TrustManager" );
var X509TrustManager = new TrustManagerInterface() {
getAcceptedIssuers: function() { return null; },
checkClientTrusted: function() { },
checkServerTrusted: function() { },
};

var TrustManagerArrayType = Java.type( "javax.net.ssl.TrustManager[]" );
var trust_manager_array = new TrustManagerArrayType( 1 );
trust_manager_array[0] = X509TrustManager;

var SecureRandomType = Java.type( "java.security.SecureRandom" );
var secure_random = new SecureRandomType;

var SSLContextType = Java.type( "javax.net.ssl.SSLContext" );
var ssl_context = SSLContextType.getInstance( "SSL" );

ssl_context.init( null, trust_manager_array, secure_random );

var HttpsURLConnectionType = Java.type( "javax.net.ssl.HttpsURLConnection" );
HttpsURLConnectionType.setDefaultSSLSocketFactory( ssl_context.getSocketFactory( ) );


// Do not validate certificate hostnames

var HostnameVerifierType = Java.type( "javax.net.ssl.HostnameVerifier" );
var host_verifier = new HostnameVerifierType() {
verify: function() { return true; }
};
HttpsURLConnectionType.setDefaultHostnameVerifier( host_verifier );
]]>
</script>


<waitfor maxwait="120" maxwaitunit="second" checkevery="2" checkeveryunit="second">
<http url="https://wrong.host.badssl.com" />
</waitfor>

我用了https://badssl.com测试上述内容。

顺便说一句,我认为 check every 的默认单位可能是亚秒,因此建议您添加 checkeveryunit

以上适用于 Nashorn。如果您有旧版本的 Java,Rhino 版本也应该是可能的。

以上源自this source .

关于java - waitfor 任务如何忽略 SSL 证书问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46827235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com