我正在尝试在Jenkins / Hudson上配置我的电子邮件,并且我经常收到错误:
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be
non-empty
我在网上看到了大量有关错误的信息,但我还没有任何工作。我在Fedora Linux上使用Sun的JDK(而不是OpenJDK)。
以下是我尝试过的一些事情。我尝试遵循这个post的建议,但是将cacerts从Windows复制到我托管Jenkins的Fedora盒子并不起作用。我尝试将Gmail配置为我的SMTP服务器时尝试关注this guide,但它也无效。我还尝试手动下载并移动这些cacert文件,并使用this guide上的命令变体将它们移动到我的Java文件夹。
我对任何建议持开放态度,因为我现在正被困住。我已经从Windows Hudson服务器上工作了,但我在Linux上苦苦挣扎。
答案 0 :(得分:452)
答案 1 :(得分:237)
在 Ubuntu 18.04 中,此错误的原因不同(JEP 229,从jks
密钥库默认格式切换为pkcs12
格式,以及Debian cacerts文件生成使用新文件的默认值)和workaround:
# Ubuntu 18.04 and various Docker images such as openjdk:9-jdk throw exceptions when
# Java applications use SSL and HTTPS, because Java 9 changed a file format, if you
# create that file from scratch, like Debian / Ubuntu do.
#
# Before applying, run your application with the Java command line parameter
# java -Djavax.net.ssl.trustStorePassword=changeit ...
# to verify that this workaround is relevant to your particular issue.
#
# The parameter by itself can be used as a workaround, as well.
# 0. First make yourself root with 'sudo bash'.
# 1. Save an empty JKS file with the default 'changeit' password for Java cacerts.
# Use 'printf' instead of 'echo' for Dockerfile RUN compatibility.
/usr/bin/printf '\xfe\xed\xfe\xed\x00\x00\x00\x02\x00\x00\x00\x00\xe2\x68\x6e\x45\xfb\x43\xdf\xa4\xd9\x92\xdd\x41\xce\xb6\xb2\x1c\x63\x30\xd7\x92' > /etc/ssl/certs/java/cacerts
# 2. Re-add all the CA certs into the previously empty file.
/var/lib/dpkg/info/ca-certificates-java.postinst configure
https://git.mikael.io/mikaelhg/broken-docker-jdk9-cacerts
状态(2018-08-07),该错误已在Ubuntu Bionic LTS 18.04.1和Ubuntu Cosmic 18.10中修复。
Ubuntu 1770553: [SRU] backport ca-certificates-java from cosmic (20180413ubuntu1)
Ubuntu 1769013: Please merge ca-certificates-java 20180413 (main) from Debian unstable (main)
Ubuntu 1739631: Fresh install with JDK 9 can't use the generated PKCS12 cacerts keystore file
docker-library 145: 9-jdk image has SSL issues
JDK-8044445 : JEP 229: Create PKCS12 Keystores by Default
JEP 229: Create PKCS12 Keystores by Default
如果在此变通办法之后问题仍然存在,您可能希望确保实际运行刚修复的Java发行版。
$ which java
/usr/bin/java
您可以使用以下命令将Java替代项设置为“auto”:
$ sudo update-java-alternatives -a
update-alternatives: error: no alternatives for mozilla-javaplugin.so
您可以仔细检查您正在执行的Java版本:
$ java --version
openjdk 10.0.1 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode)
还有其他替代方法,但这些方法有其自身的副作用,需要额外的未来维护,无论如何都无法获得回报。
下一个最佳解决方法是添加行
javax.net.ssl.trustStorePassword=changeit
到文件
/etc/java-9-openjdk/management/management.properties
/etc/java-11-openjdk/management/management.properties
无论哪个存在。
第三个问题最少的解决方法是更改
的值keystore.type=pkcs12
到
keystore.type=jks
中的文件
/etc/java-9-openjdk/security/java.security
/etc/java-11-openjdk/security/java.security
以任何一个存在,然后删除cacerts
文件并以前面描述的方式重新生成它。
答案 2 :(得分:98)
这解决了我在Ubuntu上的问题:
sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure
(在此处找到:https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1396760)
ca-certificates-java
不是Oracle JDK / JRE中的依赖项,因此必须明确安装。
答案 3 :(得分:59)
在Ubuntu 18.04上,根本原因是openjdk-11-jdk(默认)和其他包依赖于它之间的冲突。它已经在Debian中修复,很快就会被包含在Ubuntu中。同时,最简单的解决方法是将您的java降级为版本8.使用ca-certificates-java
的其他解决方案要复杂得多。
首先删除冲突的包:
sudo apt-get remove --purge openjdk* java-common default-jdk
sudo apt-get autoremove --purge
检查您是否已成功删除所有相关包:
sudo update-alternatives --config java
系统会提示您没有可用于配置的Java ,否则此解决方法将失败。
然后重新安装所需的包:
sudo apt-get install openjdk-8-jdk
答案 4 :(得分:52)
EJP基本上回答了这个问题(我意识到这个问题已经得到了答案),但我刚刚处理了这个边缘案例,并希望将我的解决方案永久化。
我在托管的Jira服务器上遇到了InvalidAlgorithmParameterException错误,该错误是我之前为只进行SSL访问而设置的。问题是我以PKCS#12格式设置了我的密钥库,但我的信任库是JKS格式。
在我的情况下,我编辑了我的server.xml文件以将keystoreType指定为PKCS,但我没有指定truststoreType,因此它默认为keystoreType。明确地将truststoreType指定为JKS为我解决了它。
答案 5 :(得分:51)
我在博客帖子 Fixing the trustAnchors problem when running OpenJDK 7 on OS X :
中遇到了这个解决方案在OS X上运行OpenJDK 7时修复了trustAnchors问题。如果你在OS X上运行OpenJDK 7并且看到了这个例外:
Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors
parameter must be non-empty
有一个简单的解决方法。只需链接Apple的JDK 1.6使用的相同cacerts文件:
cd $(/usr/libexec/java_home -v 1.7)/jre/lib/security
ln -fsh /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts
您需要为已安装的每个OpenJDK版本执行此操作。只需将-v 1.7
更改为您要修复的版本即可。运行/usr/libexec/java_home -V
以查看已安装的所有JRE和JDK。
也许OpenJDK的人可以将它添加到他们的安装脚本中。
答案 6 :(得分:40)
在Ubuntu 12.10(Quantal Quetzal)或更高版本中,证书保存在ca-certificates-java包中。无论您使用的是什么JDK,使用-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts
都会选择它们。
答案 7 :(得分:33)
在升级到OS X v10.9(Mavericks)后,我在OS X上使用JDK 1.7遇到了这个问题。对我有用的修复方法是简单地重新安装Apple版本的Java,可在http://support.apple.com/kb/DL1572获得。
答案 8 :(得分:25)
我跑了
sudo update-ca-certificates -f
创建证书文件,然后:
sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure
我回来了,谢谢你们。遗憾的是它没有包含在装置中,但我最终到达了那里。
答案 9 :(得分:12)
错误告诉系统在参数javax.net.ssl.trustStore
提供的路径中找不到信任库。
在Windows下,我将cacerts
文件从jre/lib/security
复制到Eclipse安装目录(与eclipse.ini
文件相同的位置),并在eclipse.ini
中添加了以下设置:< / p>
-Djavax.net.ssl.trustStore=cacerts
-Djavax.net.ssl.trustStorePassword=changeit
-Djavax.net.ssl.trustStoreType=JKS
我在cacerts的路径上遇到了一些麻烦(%java_home%环境变量以某种方式被覆盖),所以我使用了这个简单的解决方案。
我们的想法是提供信任库文件的有效路径 - 理想情况下,它将使用相对文件。您也可以使用绝对路径。
要确保商店类型为JKS,您需要运行以下命令:
keytool -list -keystore cacerts
Keystore type: JKS
Keystore provider: SUN
答案 10 :(得分:10)
升级到OS X v10.9(小牛队)后,我遇到了很多安全问题:
trustAnchors
参数必须为非空我已应用此Java更新,它修复了我的所有问题:http://support.apple.com/kb/DL1572?viewlocale=en_US
答案 11 :(得分:9)
删除ca-certificates-java包并重新安装它对我有用(Ubuntu MATE 17.10(Artful Aardvark))。
sudo dpkg --purge --force-depends ca-certificates-java
sudo apt-get install ca-certificates-java
谢谢你,jdstrand:对错误983302的评论1,Re:ca-certificates-java无法在Oneiric Ocelot上安装Java cacerts 。
答案 12 :(得分:8)
我期待这样的事情,因为我在Talend Open Studio中使用了备用JVM(目前支持仅存在于JDK 1.7之前)。我出于安全目的使用8 ...无论如何
更新证书商店:
id someObject = [dict objectForKey:@"foo"];
if (someObject != [NSNull null]){
//do something
}
然后
在初始化参数中添加新值
sudo update-ca-certificates -f
对我来说,第二个条目有效。我认为,根据Talend Open Studio / TEnt + JVM的版本,它有不同的参数名称,但它会查找相同的密钥库文件。
答案 13 :(得分:8)
对我而言,这是由信任库中缺少trustedCertEntry引起的。
要测试,请使用:
keytool -list -keystore keystore.jks
它给了我:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
cert-alias, 31-Jul-2017, PrivateKeyEntry
即使我的PrivateKeyEntry包含CA ,也需要单独导入 :
keytool -import -alias root-ca1 -file rootca.crt -keystore keystore.jks
它导入证书,然后重新运行keytool -list -keystore keystore.jks
现在给出:
Your keystore contains 2 entries
cert-alias, 31-Jul-2017, PrivateKeyEntry,
Certificate fingerprint (SHA1):
<fingerprint>
root-ca1, 04-Aug-2017, trustedCertEntry,
Certificate fingerprint (SHA1):
<fingerprint>
现在它有一个trustedCertEntry,Tomcat将成功启动。
答案 14 :(得分:5)
如果您在使用JDK9和Maven的Ubuntu上遇到此问题,可以添加此JVM选项 - 首先检查路径是否存在:
-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts
如果文件丢失,请尝试按照某人的说法安装ca-certificates-java:
sudo apt install ca-certificates-java
答案 15 :(得分:4)
在从Maven LTS(Xenial Xerus)升级到Ubuntu 16.04 LTS(Bionic Beaver)之后尝试使用Ubuntu 18.04 3时出现此问题。
检查/ usr / lib / jvm / java-8-oracle / jre / lib / security显示我的cacerts文件是指向/etc/ssl/certs/java/cacerts
的符号链接。
我还有一个怀疑名为cacerts.original
的文件。
我将cacerts.original
重命名为cacerts
,这解决了问题。
答案 16 :(得分:3)
升级到Spring Boot 1.4.1(或更高版本)后,您可能还会遇到此错误,因为它会将Tomcat 8.5.5作为其依赖项的一部分。
问题是由于Tomcat处理信任存储的方式。如果您恰好已将信任库位置指定为与Spring Boot配置中的密钥库相同,则在启动应用程序时可能会收到trustAnchors parameter must be non-empty
消息。
server.ssl.key-store=classpath:server.jks
server.ssl.trust-store=classpath:server.jks
除非您知道自己需要,否则只需删除server.ssl.trust-store
配置,在这种情况下,请参阅以下链接。
以下问题包含有关此问题的更多详细信息:
答案 17 :(得分:3)
在我的情况下,客户端应用程序中使用的JKS文件已损坏。我创建了一个新的并导入了目标服务器SSL证书。然后我在客户端应用程序中使用新的JKS文件作为信任存储,如:
System.setProperty("javax.net.ssl.trustStore",path_to_your_cacerts_file);
来源:Java SSL and certificate keystore
我使用(KeyStore Explorer)工具创建新的JKS。您可以通过此链接KeyStore Explorer下载。
答案 18 :(得分:3)
我在Linux上的Java 9.0.1上有此错误消息。这是由于JDK的已知错误,其中.tar.gz二进制包中的cacerts文件为空(从http://jdk.java.net/9/下载)。
请参阅 JDK 9.0.1 Release Notes 的“已知问题”段落,说“默认情况下,TLS在OpenJDK 9上不起作用”。
在Debian / Ubuntu(可能还有其他衍生产品)上,一个简单的解决方法是用“ca-certificates-java”包替换cacerts文件:
sudo apt install ca-certificates-java
cp /etc/ssl/certs/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts
在Red Hat Linux / CentOS上,您可以从“ca-certificates”包中执行相同的操作:
sudo yum install ca-certificates
cp /etc/pki/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts
答案 19 :(得分:3)
在更新OS X v10.9(Mavericks)之后,当使用旧版Java 6并尝试访问HTTPS URL时,我在OS X上也遇到过这种情况。修正案是Peter Kriens的反面;我需要将cacerts
从1.7空间复制到1.6版本链接的位置:
(as root)
umask 022
mkdir -p /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security
cp $(/usr/libexec/java_home -v 1.7)/jre/lib/security/cacerts \
/System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security
答案 20 :(得分:2)
在Windows10和openjdk中,是由随二进制文件一起分发的空cacerts文件引起的。该错误的解释如下:https://github.com/AdoptOpenJDK/openjdk-build/issues/555
您可以从myData.withColumn('myColumn', blank_as_null('myColumn'))
之类的旧版本复制文件到adoptOpenJdk8\jre\lib\security\cacerts
。
AdoptOpenJDK错误版本为https://github.com/AdoptOpenJDK/openjdk8-releases/releases/download/jdk8u172-b11/OpenJDK8_x64_Win_jdk8u172-b11.zip
答案 21 :(得分:2)
我在Android SDK sdkmanager中遇到了这个问题。对我来说,这个解决方案有效:
'cacert'文件很小(22B)。我从ppa安装了oracle-java8-installer:webupd8team / java(根据本手册:https://docs.nativescript.org/start/ns-setup-linux)。
答案 22 :(得分:2)
System.setProperty("javax.net.ssl.trustStore", "C:\\Users\\user-id\\Desktop\\tomcat\\cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "passwd");
您必须在代码中添加以上两行。它无法找到信任库。
答案 23 :(得分:2)
我是可移植性的爱好者,所以我不安装Java,只需下载tar.gz并在路径中导出一些值即可。
我为这个问题而奋斗,没有解决方案(安装或更新操作系统证书)。
我的错误很明显: jdk中的空证书。
我不知道为什么,但是我的jdk.tar.gz有一个空的cacerts文件
/../some_openjdk/jre/lib/security/cacerts
:32个字节
从以下位置下载:
经过几次尝试,我找到了一个正确的jdk.tar.gz,其中包含一个证书文件,大小为 101 KB
我从https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries下载了这个开放的jdk
我在这个Dockerfile中找到了这个URL:
答案 24 :(得分:1)
在ubuntu 14.04上使用来自ppa:openjdk-r / ppa的openjdk 11,这对我有用:
在java.security中,将密钥库类型更改为
keystore.type=jks
然后:
sudo dpkg --purge --force-depends ca-certificates-java
sudo apt-get install ca-certificates-java
当您检查它是否有效时,请确保没有使用任何仍在运行旧Java的守护进程(例如gradle的--no-daemon
选项)
此错误很好地描述了所有内容,将帮助您了解https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1739631
的情况答案 25 :(得分:1)
这极有可能会帮助任何人,但是....对于在Raspberry Pi上使用Docker Image在Docker映像上运行Java 8的任何人(使用AMD CPU),我得到以下Dockerfile可以为我成功构建并运行
<form action="{{ route('login') }}" method="POST">
{{ csrf_field() }}
<div class="input-group mb-3">
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email"
placeholder="Username or Email" value="{{ old('email') }}" required autofocus>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-user"></span>
</div>
@if ($errors->has('email'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>
<div class="input-group mb-3">
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}"
placeholder="Password" name="password" required>
<div class="input-group-append">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
@if ($errors->has('password'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>
<div class="row">
<div class="col-8">
<input type="checkbox" name="remember"> {{ trans('global.remember_me') }}
</div>
<div class="col-4">
<button type="submit" class="btn btn-primary btn-block btn-flat">{{ trans('global.login') }}</button>
</div>
</div>
</form>
答案 26 :(得分:1)
使用Amazon SDK v2,Windows 10和JDK8陷入困境。
Amazon SDK抱怨凭证加载。
我通过用JDK11替换了JDK8的security/cacert
文件来解决了这个问题。
答案 27 :(得分:1)
我在运行特定的Android套件以便在Ubuntu 14.04(Trusty Tahr)上进行测试时遇到了这个问题。根据shaheen的建议,有两件事对我有用:
sudo update-ca-certificates -f
sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure
答案 28 :(得分:1)
为了记录, none 的答案在这里为我工作。 My Gradle构建开始因此错误而神秘失败,无法从Maven central获取特定POM文件的HEAD。
事实证明,我将JAVA_HOME设置为我自己构建的OpenJDK,这是我为调试javac问题而构建的。将其设置回我系统上安装的JDK就可以修复它。
答案 29 :(得分:1)
我在互联网上找到的解决方案都没有,但Peter Kriens's answer的修改版似乎可以胜任。
首先通过运行/usr/libexec/java_home
找到您的Java文件夹。对我来说这是1.6.0.jdk
版本。然后转到lib/security
子文件夹(对我来说/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security
)。
然后删除cacerts
文件(如果已存在)并使用sudo find / -name "cacerts"
在系统中搜索一个文件。它为我发现了多个项目,包括我安装的Xcode或其他应用程序的版本,以及我选择的/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/cacerts
。
使用该文件并为其创建符号链接(在之前的Java文件夹中)sudo ln -fsh "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/cacerts"
,它应该可以正常工作。
我有两个 - 来自Apple的2017-001下载的Java(https://support.apple.com/kb/dl1572 - 我假设正确的证书来自哪里)和Oracle的{{{} 3}}(塞拉利昂)。
答案 30 :(得分:0)
我有同样的错误,问题不在于配置JDK,而是在application.properties文件中'trust-store:'参数下的jks文件的简单错误路径,请仔细检查该路径是否正确
答案 31 :(得分:0)
就我而言,此问题的根本原因是空信任库(它是应用服务器信任库)。 当我添加任何虚拟 x.509 证书时,就停止抛出此错误。
使用 keytool 在信任库中添加证书的命令
keytool -import -alias dummy -keystore <path to keystore> -storepass <truststore password if any>
答案 32 :(得分:0)
Marquis of Lorne's answer是准确的,我添加一些信息用于调试目的:
要调试此问题(我在here中对此进行了详细介绍)并了解正在使用(或尝试使用)什么信任库,可以添加the property javax.net.debug = all然后筛选有关信任库的日志。您也可以使用属性javax.net.ssl.trustStore来指定特定的信任库。例如:
java -Djavax.net.debug=all -Djavax.net.ssl.trustStore=/Another/path/to/cacerts -jar test_get_https-0.0.1-SNAPSHOT-jar-with-dependencies.jar https://www.calca.com.py 2>&1| grep -i truststore
答案 33 :(得分:0)
我在IntelliJ IDEA 14中导入Gradle项目时遇到了这个问题。 解决方案是使用Gradle的本地副本而不是项目目录中的包装器。
答案 34 :(得分:0)
在Red Hat Linux上,我通过将证书导入/etc/pki/java/cacerts
来解决此问题。
答案 35 :(得分:0)
您必须将cert文件添加到Java密钥库中 进入chrom,打开网站,以txt格式保存证书
转到cmd> keytool-导入-trustcacerts -keystore $ JAVA_HOME / jre / lib / security / cacerts -storepass changeit -alias根-import -file Trustedcaroot.txt
https://knowledge.digicert.com/solution/SO4085.html
这就像一个魅力
答案 36 :(得分:0)
发送电子邮件时出现同样的错误,但始终不。在我的情况下,我每次都更改了一行代码来获取一个新的Session对象:
MimeMessage message = new MimeMessage(Session.getDefaultInstance(props, authenticator));
到
MimeMessage message = new MimeMessage(Session.getInstance(props, authenticator));
此后每次都会发送电子邮件。
我得到的错误:
javax.mail.MessagingException:无法将套接字转换为TLS;
嵌套异常是:javax.net.ssl.SSLException:
java.lang.RuntimeException:意外错误:
java.security.InvalidAlgorithmParameterException:trustAnchors
在参数必须非空 com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1907)在
com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:666)
在javax.mail.Service.connect(Service.java:317)上 javax.mail.Service.connect(Service.java:176)在 javax.mail.Service.connect(Service.java:125)在 javax.mail.Transport.send0(Transport.java:194)在 javax.mail.Transport.send(Transport.java:124)
答案 37 :(得分:0)
对于我来说,我没有完全指定VM参数。
({Run Configurations.. > (under Apache Tomcat) any server > (x)= Arguments > VM arguments:
)
确保正确设置了所有VM参数。
答案 38 :(得分:0)
我跑了
sudo update-ca-certificates -f 创建证书文件,然后:
sudo /var/lib/dpkg/info/ca-certificates-java.postinst配置
,然后更改jar执行的命令行:
sudo java -cp xx.jar:lib / * co.com.ixxx.clixxxlarxa.Main
答案 39 :(得分:0)
我发现了此错误的另一个原因,与Ubuntu无关。
我尝试在Spring boot 2应用程序中设置双向TLS,并在使用仅具有私钥项而没有可信证书项的信任库后遇到了此问题。
这是我的Spring Boot TLS配置
server.port=8443
server.ssl.key-alias=oba-tls
server.ssl.key-password=mypw
server.ssl.key-store-password=mypw
server.ssl.key-store=classpath:keys/tls-keystore.pfx
server.ssl.key-store-type=PKCS12
server.ssl.enabled=true
server.ssl.client-auth=need
server.ssl.trust-store=classpath:keys/truststore.pfx
server.ssl.trust-store-password=mypw
server.ssl.trust-store-type=PKCS12
server.ssl.ciphers=ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA384
server.ssl.protocol=TLS
server.ssl.enabled-protocols=TLSv1.2
要生成truststore.pfx,我必须使用以下命令使其起作用。
openssl req -newkey rsa:2048 -nodes -keyout private.key -x509 -out cert.crt
keytool -importcert -alias oba-trust -file cert.crt -keystore truststore.jks
keytool -importkeystore -srckeystore truststore.jks -destkeystore truststore.pfx -srcstoretype JKS - deststoretype PKCS12 -deststorepass yourpassword
答案 40 :(得分:0)
在Ubuntu 18.04上,我需要使用OpenJDK 1.7来维护旧项目。我下载了二进制软件包。但是当我在上面执行脚本时,我遇到了同样的错误。
解决方案是在cacerts
文件夹中删除已下载JDK的jre/lib/security
文件,然后将其创建为与cacerts
中系统/etc/ssl/certs/java/
文件的符号链接:
sudo ln -s /etc/ssl/certs/java/cacerts /path/to/downloaded/java/jre/lib/security/cacerts
答案 41 :(得分:0)
在Ubuntu上:
sudo apt install ca-certificates-java
或
sudo apt-get install ca-certificates-java
为我排序。
答案 42 :(得分:0)
另一个原因是它实际上是一个有效的错误。一些邪恶的Wi-Fi热点会破坏证书,man-in-the-middle attack你要知道什么(逃跑!)。
一些大型雇主会做同样的伎俩,特别是在敏感的网络区域,因此他们可以监控所有加密的流量(从最终用户的角度来看并不是很好,但可能有充分的理由)。
答案 43 :(得分:0)
使用信任库时遇到此错误,该信任库使用#PKCS12格式的IBM Websphere JDK keytool导出,并尝试使用Oracle JRE上的该文件通过SSL进行通信。
我的解决方案是在IBM JRE上运行或使用IBM Websphere keytool将信任库转换为JKS,因此我能够在Oracle JRE中运行它。
答案 44 :(得分:0)
对我来说,只需将Jenkins插件“Email Extension Plugin”升级到最新版本(2.61)即可解决。
这两个插件负责Jenkins中的电子邮件配置:
答案 45 :(得分:-3)
实际上您只需要执行:
sudo chmod +x ./gradlew(your script)