在 Maven 构建中使用小 dh 密钥信任存储库

Trust repository with small dh key in maven build

在我新设置的 CentOS 8 VM 中使用 maven 构建我的项目时,当 maven 尝试从我们的内部联系下载依赖项时,我收到以下错误:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.120 s
[INFO] Finished at: 2020-03-25T17:43:34+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project myproject: Could not resolve dependencies for project our.domain:myproject:jar:1.5.0: Failed to collect dependencies at our.domain.internal:internal-commons:jar:0.12.3: Failed to read artifact descriptor for our.domain.internal:internal-commons:jar:0.12.3: Could not transfer artifact our.domain.internal:internal-commons:pom:0.12.3 from/to nexus-proxy (https://nexus.our.domain/repository/maven-public/): DH ServerKeyExchange does not comply to algorithm constraints -> [Help 1]

当我尝试阅读该 nexus 上的任何网页时也会出现此问题:

[root@localhost Daisy]# curl https://nexus.our.domain
curl: (35) error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small

我尝试使用以下方法手动将密钥添加到我的 known_hosts 文件中:

ssh-keyscan -p 443 nexus.our.domain >> ~/.ssh/known_hosts

但我 returns 没有任何控制台输出,也没有对文件进行更改。 运行

ssh-keyscan -p 443 nexus.our.domain

也完全没有输出。

我已将此问题报告给管理我们关系的内部团队。

我仍然会感谢任何强制我的 VM 接受我们的关系密钥的解决方案,这样我就不必等到密钥被交换了。我可以在客户端 (VM) 端的任何级别(Maven、https、ssl 或任何更低级别)自由处理此问题。


使用的版本:

CentOS: CentOS Linux 8.1.1911 版(核心版)

Maven:

[root@localhost Daisy]# mvn --version
Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Maven home: /usr/share/maven
Java version: 11.0.5, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-11-openjdk-11.0.5.10-2.el8_1.x86_64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-147.5.1.el8_1.x86_64", arch: "amd64", family: "unix"

SSHOpenSSH_8.0p1,OpenSSL 1.1.1c FIPS 2019 年 5 月 28 日

更改 /etc/crypto-policies/back-ends/opensslcnf.config 中的第一行:

- CipherString = @SECLEVEL=2:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:-aDSS:-3DES:!DES:!RC4:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
+ CipherString = @SECLEVEL=1:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:-aDSS:-3DES:!DES:!RC4:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8

(将 SECLEVEL=2 更改为 SECLEVEL=1)

对于 运行 的 Maven 构建,我还必须更改 jvm 设置:

请记住,这只是一种解决方法。该设置是安全设置,通常不应更改。