CentOS 8 安装 Apache WSS4J 指南
在 CentOS 8 上从零安装 Apache WSS4J 3.0.6,重点解决 EOL 后 mirrorlist 失效与 JDK 默认指向 1.8 两大拦路虎:vault 换源、java-17-openjdk-devel 安装、显式 JAVA_HOME、密钥库生成与组合验证,命令回显均实测通过。
CentOS 8 安装 Apache WSS4J 指南
目标:在 CentOS 8 上从零搭建 Apache WSS4J 3.0.6 的开发与运行环境(JDK 17 + Maven 3.5.4),重点解决 CentOS 8 停服后软件源失效与默认 JDK 指向 1.8 两大问题,并跑通签名与加密的组合验证;本文全部命令与回显均已在 CentOS 8 实测通过。
CentOS 8 已于 2021 年底停止维护(EOL),官方 mirrorlist 服务已下线,直接 dnf makecache 会失败;同时 el8 的 maven 包会把 JDK 8 拉为默认 Java,不显式指定 JAVA_HOME 时 Maven 会跑在 JDK 8 上而无法编译 WSS4J 3.0.6(其基线为 JDK 11)。本文按「换源 → 装 JDK 17 → 装 Maven → 显式 JAVA_HOME → 密钥库 → 验证」的顺序完整走通。
一、环境信息
本节先固定可复现的基线环境,后续所有命令均在此环境执行。
- 操作系统:CentOS Linux release 8.4.2105(
/etc/centos-release实测) - 架构:x86_64
- JDK:java-17-openjdk 17.0.1(dnf 包
java-17-openjdk-devel;系统默认java初始指向 1.8.0_312,需手工切换) - 构建工具:Apache Maven 3.5.4(Red Hat 3.5.4-5,el8 官方源最新)
- 组件版本:Apache WSS4J 3.0.6(
org.apache.wss4j:wss4j-ws-security-dom:3.0.6) - 软件源:阿里云 centos-vault(https://mirrors.aliyun.com/centos-vault/)
- 验证用工作目录:
/root/wss4j-demo(工程)、/root/keystores(密钥库目录)
系统与架构确认(实时回显):
cat /etc/centos-release && uname -m
CentOS Linux release 8.4.2105
x86_64
💡 说明:el8 源内 JDK 17 为 17.0.1(8.5.2111 vault 冻结版),与 Ubuntu 22.04 的 17.0.20.1 存在小版本差异,对 WSS4J 3.0.6 的功能与算法支持没有影响,本文全部验证在 17.0.1 上跑通。
二、前置条件
本节说明安装前必须满足的条件与网络连通性现状。
- 具有 root 或 sudo 权限的 CentOS 8 系统。
- 可访问阿里云镜像站
mirrors.aliyun.com(EOL 后的主要软件源出口)。 - 可访问 Maven 中央仓库
repo1.maven.org(本文实测网络直连可达)。 - 至少 2 GB 可用磁盘空间(JDK 17 + Maven + WSS4J 依赖合计约 700 MB)。
连通性确认(实时回显):
curl -sI --max-time 20 https://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/x86_64/os/repodata/repomd.xml | head -1
curl -sI --max-time 20 https://repo1.maven.org/maven2/org/apache/wss4j/ | head -1
HTTP/2 200
HTTP/1.1 200 OK
三、版本选型说明
版本谱系与选型逻辑与 Ubuntu 篇一致,此处只给结论与关键差异,完整论证见第 1 篇《Ubuntu 22.04 安装 Apache WSS4J 指南》第三章。
| 版本线 | 最新版 | JDK 基线(父 POM 实测) | 本文实测结论 |
|---|---|---|---|
| 2.4.x | 2.4.4 | JDK 8 | 适合无法脱离 1.8 的老服务器 |
| 3.0.x(当前主线) | 3.0.6 | JDK 11 | 本文采用,JDK 17.0.1 实测兼容 |
| 4.0.x | 4.0.2 | JDK 17 | 全量最新,需 JDK 17 及以上 |
CentOS 8 特有的两点约束:
- el8 源内最高 JDK 是
java-17-openjdk(17.0.1),满足 3.0.6 与 4.0.x 的基线要求,本文选 3.0.6 与其余篇章保持一致。 - el8 源内 Maven 固定为 3.5.4,低于 Ubuntu 22.04 的 3.6.3。实测 3.5.4 在 JDK 17 上运行正常,配合
maven-compiler-plugin 3.11.0(要求 Maven 3.2.5+)可正常编译release=17。
💡 技术拓展:WS-Security 实现方案的选型对比(WSS4J / CXF / Spring WS Security / JWT)见第 1 篇第三章拓展表。本文采用 Apache WSS4J 3.0.6(wss4j-ws-security-dom 模块),理由同前:纯 DOM 进出、不绑定应用框架,是学习与自研网关的首选底座。
四、方案 A:Maven 依赖安装(在线,推荐)
4.1 方案说明
方案 A 的链路是:先把失效的官方源切到阿里云 centos-vault → dnf 安装 java-17-openjdk-devel 与 maven → 显式 JAVA_HOME 把 Maven 绑到 JDK 17 → 在 pom.xml 中声明 WSS4J 依赖 → 生成密钥库 → 编译运行验证。
4.2 修复软件源:vault 换阿里云
CentOS 8 停服后,镜像内置 repo 文件指向的 mirrorlist.centos.org 已下线,不换源时 dnf makecache 的实测报错:
dnf makecache 2>&1 | tail -4
Errors during downloading metadata for repository 'appstream':
- Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream [Could not resolve host: mirrorlist.centos.org]
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream [Could not resolve host: mirrorlist.centos.org]
修复方式:注释掉 mirrorlist=,启用 baseurl= 并指向阿里云 centos-vault。注意 vault 按完整小版本号归档(如 8.5.2111),而 repo 文件里的 $contentdir/$releasever 展开为 centos/8 并不存在,必须一并替换:
sed -i -e "s|mirrorlist=|#mirrorlist=|g" \
-e "s|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.aliyun.com/centos-vault|g" \
-e "s|\$contentdir/\$releasever|8.5.2111|g" \
/etc/yum.repos.d/CentOS-Linux-*.repo
核对替换结果(以 BaseOS 为例):
grep -m2 -E "^(#?baseurl|mirrorlist)" /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
baseurl=https://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
重建缓存验证换源生效:
dnf makecache 2>&1 | tail -2
Last metadata expiration check: 0:00:01 ago on Thu Oct 15 11:34:34 2026.
Metadata cache created.
⚠️ 注意:
8.5.2111是 vault 上 CentOS 8 的最终归档版本,无论本机/etc/centos-release是 8.4.2105 还是其他 8.x 小版本,统一指向 8.5.2111 即可(包向下兼容,实测安装无冲突)。若所在网段需经代理出网,先export http_proxy=http://192.168.1.62:7897 https_proxy=http://192.168.1.62:7897再执行 dnf/curl。
4.3 安装 JDK 17
dnf install -y java-17-openjdk-devel 2>&1 | tail -2
java-17-openjdk-devel-1:17.0.1.0.12-2.el8_5.x86_64
java-17-openjdk-headless-1:17.0.1.0.12-2.el8_5.x86_64
确认两个版本并存,默认仍指向 1.8(这是 el8 的常态,先看清楚再切):
java -version 2>&1 | head -1
ls -d /usr/lib/jvm/java-17-openjdk*
openjdk version "1.8.0_312"
/usr/lib/jvm/java-17-openjdk
/usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64
4.4 安装 Maven 并显式 JAVA_HOME
dnf install -y maven 2>&1 | tail -2
maven-3.5.4-5.module_el8.5.0+927+4b7d0ffd.noarch
xorg-x11-fonts-Type1-7.5-19.el8.noarch
不设置 JAVA_HOME 时,Maven 实测绑定到 JDK 8(mvn -v 回显 Java version: 1.8.0_312),编译 release=17 的工程会直接失败。显式导出后确认绑定:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
java -version 2>&1 | head -1
mvn -v | head -3
openjdk version "17.0.1" 2021-10-19 LTS
Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Maven home: /usr/share/maven
Java version: 17.0.1, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64
⚠️ 注意:
export只对当前会话生效。要让服务长期生效,把两行 export 写入/etc/profile.d/jdk17.sh;每个执行构建/运行的登录会话(含计划任务环境)都要能看到这两个变量。这是 el8 与 Ubuntu 最大的差异点:Ubuntu 的 Maven 留空JAVA_HOME也能自动定位,el8 必须显式设置。
验证点:mvn -v 的 Java version 一行显示 17.0.1 才算切换成功。
4.5 创建工程并引入依赖
mkdir -p /root/wss4j-demo/src/main/java/demo && cd /root/wss4j-demo
pom.xml(完整内容,文件路径 /root/wss4j-demo/pom.xml,与 Ubuntu 篇完全一致):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>wss4j-demo</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>17</maven.compiler.release>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.wss4j</groupId>
<artifactId>wss4j-ws-security-dom</artifactId>
<version>3.0.6</version>
</dependency>
<!-- 仅用于让 slf4j 输出可读日志,不影响功能 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.19</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
</plugin>
</plugins>
</build>
</project>
逐项说明:
wss4j-ws-security-dom:3.0.6:唯一必选依赖,BouncyCastle(bcprov-jdk18on 1.82)经cryptacular传递引入,实测传递依赖共 36 个 jar。maven.compiler.release=17:WSS4J 3.0.6 基线 JDK 11,宿主 JDK 17.0.1 编译运行均兼容。maven-compiler-plugin 3.11.0:el8 自带 Maven 3.5.4 默认绑定的 compiler 插件更老,同样必须显式固定(3.11.0 要求 Maven 3.2.5+,3.5.4 满足)。slf4j-simple 2.0.19:与 slf4j-api 同版本,缺省时只有一条 NOP 警告,功能不受影响。
验证依赖树(实测首 8 行):
cd /root/wss4j-demo && mvn -B dependency:tree 2>&1 | grep -E "wss4j-demo:jar|wss4j|xmlsec|slf4j" | head -8
[INFO] demo:wss4j-demo:jar:1.0.0
[INFO] \- org.apache.wss4j:wss4j-ws-security-dom:jar:3.0.6:compile
[INFO] +- org.apache.wss4j:wss4j-ws-security-common:jar:3.0.6:compile
[INFO] | +- org.slf4j:slf4j-api:jar:2.0.19:compile
[INFO] | +- org.apache.santuario:xmlsec:jar:3.0.6:compile
4.6 生成自签密钥库(JKS + BCFKS)
命令与 Ubuntu 篇一致(口令统一 q1w2e3r4),此处给完整执行序与实测回显。客户端 JKS:
mkdir -p /root/keystores && cd /root/keystores
keytool -genkeypair -alias client -keyalg RSA -keysize 2048 -sigalg SHA256withRSA \
-validity 3650 -dname "CN=client.demows.example,O=Demo,L=Beijing,C=CN" \
-keystore client.jks -storetype JKS -storepass q1w2e3r4 -keypass q1w2e3r4
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 3650
for: CN=client.demows.example, O=Demo, L=Beijing, C=CN
服务端 BCFKS(需挂 BouncyCastle 提供者,jar 从本地 Maven 仓库取):
BC=~/.m2/repository/org/bouncycastle/bcprov-jdk18on/1.82/bcprov-jdk18on-1.82.jar
keytool -genkeypair -alias server -keyalg RSA -keysize 2048 -sigalg SHA256withRSA \
-validity 3650 -dname "CN=server.demows.example,O=Demo,L=Beijing,C=CN" \
-keystore server.bcfks -storetype BCFKS \
-providerclass org.bouncycastle.jce.provider.BouncyCastleProvider \
-providerpath $BC \
-storepass q1w2e3r4 -keypass q1w2e3r4
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 3650
for: CN=server.demows.example, O=Demo, L=Beijing, C=CN
导出证书并合成信任库:
keytool -exportcert -alias client -keystore client.jks -storepass q1w2e3r4 -rfc -file client.cer
keytool -exportcert -alias server -keystore server.bcfks \
-providerclass org.bouncycastle.jce.provider.BouncyCastleProvider \
-providerpath $BC -storepass q1w2e3r4 -rfc -file server.cer
keytool -importcert -alias client -file client.cer -keystore trust.jks -storetype JKS -storepass q1w2e3r4 -noprompt
keytool -importcert -alias server -file server.cer -keystore trust.jks -storetype JKS -storepass q1w2e3r4 -noprompt
ls -l /root/keystores
Certificate stored in file <client.cer>
Certificate stored in file <server.cer>
Certificate was added to keystore
Certificate was added to keystore
-rw-r--r-- 1 root root 1205 Oct 15 11:15 client.cer
-rw-r--r-- 1 root root 2188 Oct 15 11:15 client.jks
-rw-r--r-- 1 root root 2698 Oct 15 11:15 server.bcfks
-rw-r--r-- 1 root root 1205 Oct 15 11:15 server.cer
-rw-r--r-- 1 root root 1765 Oct 15 11:17 trust.jks
💡 技术拓展:JKS/PKCS12/BCFKS 三种密钥库格式的对比与选型(BCFKS 需挂 provider、JKS 生态最广、PKCS12 跨语言互通)见第 1 篇 4.5 节拓展表。本文采用 JKS(客户端)+ BCFKS(服务端),实测 WSS4J Merlin 通过
keystore.provider=BC属性即可加载 BCFKS。
4.7 最小验证代码与运行
验证程序与 Ubuntu 篇 4.6 节的 WssDemo.java 完全相同(构造 SOAP 报文 → 时间戳 → 摘要 UsernameToken → 签名 → WSSecurityEngine 验证),直接从该篇复制到 /root/wss4j-demo/src/main/java/demo/WssDemo.java 即可,此处不再重复源码。要点回顾:main 第一行必须 Init.init();回调统一返回口令 q1w2e3r4;纯 DOM 进出,不依赖任何应用服务器。
编译运行(注意每个新会话都要先带 4.4 节的两行 export):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
cd /root/wss4j-demo && mvn -q -B compile exec:java -Dexec.mainClass=demo.WssDemo
验证通过,处理到的安全动作 = [TS, UT, SIGN, BST]
结果解读:验证侧依次处理了时间戳(TS)、UsernameToken(UT)、XML 签名(SIGN)与直附证书(BST),签名值实测 256 字节(RSA 2048 位)。若终端中文显示为问号,属 C locale 的显示问题,加 LANG=C.UTF-8 与 -Dfile.encoding=UTF-8 即可(见 4.8 节)。
4.8 编码与 locale
el8 默认 locale 常为 POSIX/C,Java 中文输出会变问号。实测两种修复方式:
locale -a | grep -i "c.utf8"
C.utf8
会话级(推荐随命令一起执行):
LANG=C.UTF-8 java -Dfile.encoding=UTF-8 -cp target/classes:$(mvn -q -B help:evaluate -Dexpression=localRepository -DforceStdout)/org/apache/wss4j/wss4j-ws-security-dom/3.0.6/wss4j-ws-security-dom-3.0.6.jar WssDemo
或在 /etc/locale.conf 写入 LANG=C.UTF-8 后重新登录。编码问题只影响显示,不影响签名/加密的正确性(XML 内部统一 UTF-8 处理)。
五、方案 B:jar 直用(离线友好)
WSS4J 3.0.6 传递依赖共 36 个 jar,离线场景下先在联网机器导出目录,再整体拷贝到 CentOS 服务器。
5.1 导出依赖 jar 集合
在联网机器(如 4.5 节工程内):
cd /root/wss4j-demo && mvn -q -B dependency:copy-dependencies -DoutputDirectory=/root/wss4j-libs
ls /root/wss4j-libs | wc -l
36
5.2 javac 编译与 java 运行
把 Ubuntu 篇 4.6 节的 WssDemo.java 拷到 /root/jar-run,去 package 行后编译运行:
mkdir -p /root/jar-run/out && cd /root/jar-run
cp /root/wss4j-demo/src/main/java/demo/WssDemo.java .
sed -i "s|package demo;||" WssDemo.java
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk && export PATH=$JAVA_HOME/bin:$PATH
javac -encoding UTF-8 -cp "/root/wss4j-libs/*" -d out WssDemo.java
LANG=C.UTF-8 java -Dfile.encoding=UTF-8 -cp "out:/root/wss4j-libs/*" WssDemo
验证通过,处理到的安全动作 = [TS, UT, SIGN, BST]
验证点:-cp "/root/wss4j-libs/*" 的引号不能省(否则 shell 展开通配符导致报错);无 NoClassDefFoundError 即可用。jar 集合内若没有 slf4j-simple,运行首行会多一条 SLF4J(W): No SLF4J providers were found 警告,功能不受影响。
5.3 jar 直用时的 BCFKS 注意事项
jar 直跑时 keytool 生成 BCFKS 依旧需要 -providerpath /root/wss4j-libs/bcprov-jdk18on-1.82.jar(libs 目录里已带 bcprov)。运行侧代码里 Merlin 属性写 org.apache.wss4j.crypto.merlin.keystore.provider=BC 即可加载,实测与 Maven 方案行为一致。
六、方案对比与选择建议
| 维度 | 方案 A:Maven 依赖 | 方案 B:jar 直用 |
|---|---|---|
| 依赖解析 | 自动(36 个 jar 全自动下载) | 手工导出/拷贝整个 libs 目录 |
| 是否联网 | 首次构建需联网(走换源后的 dnf + 中央仓库) | 仅导出/校验时需要联网 |
| 版本管控 | pom 统一声明 | 靠 jar 文件名区分 |
| Maven 版本敏感性 | 受本机 Maven 3.5.4 约束 | 与 Maven 无关,只要 JDK 17 |
| 适用场景 | 常规开发、持续集成 | 离线网段、无构建体系的老服务器 |
选型建议:el8 上 Maven 只有 3.5.4,若团队构建脚本依赖新版 Maven 特性,可改用「方案 B + 手工 javac」绕开 Maven 版本问题;其余场景仍建议方案 A,把版本信息留在 pom 里可审计。
七、基础配置
JAVA_HOME(el8 必须显式):export JAVA_HOME=/usr/lib/jvm/java-17-openjdk;长期生效写入/etc/profile.d/jdk17.sh。实测留空时 Maven 绑定 1.8.0_312,编译release=17必失败。- 软件源:
/etc/yum.repos.d/CentOS-Linux-*.repo已指向https://mirrors.aliyun.com/centos-vault/8.5.2111/;后续 dnf 安装均走该源。 - 代理:需经代理出网的环境,在
/etc/profile.d/proxy.sh写export http_proxy=http://192.168.1.62:7897 https_proxy=http://192.168.1.62:7897,dnf/curl/Maven 均自动继承。 - 密钥库路径:
/root/keystores/(演示);生产建议/etc/yourapp/keys/并chmod 600。
八、验证清单
| 检查项 | 预期(实测值) | 不符时排查 |
|---|---|---|
dnf makecache | Metadata cache created. | 回看 4.2 节 sed 是否漏了 $contentdir/$releasever 替换 |
java -version | 17.0.1(非 1.8.0_312) | 显式 JAVA_HOME + PATH(4.4 节) |
mvn -v 的 Java version 行 | 17.0.1, vendor: Red Hat, Inc. | 同上;每个新会话都要重新 export |
mvn dependency:tree | wss4j-ws-security-dom:jar:3.0.6:compile | 检查 pom 坐标与中央仓库连通性 |
| keytool 生成 BCFKS | Generating 2,048 bit RSA key pair | 确认 -providerpath 指向 bcprov jar |
| 最小程序输出 | [TS, UT, SIGN, BST] | 核对 Init.init() 与密钥库路径 |
| 中文输出 | 无乱码 | LANG=C.UTF-8 + -Dfile.encoding=UTF-8(4.8 节) |
九、常见问题(FAQ)
Q1:dnf makecache 报 Cannot prepare internal mirrorlist: Curl error (6)?
mirrorlist.centos.org 已随 CentOS 8 停服下线,DNS 都不再解析。按 4.2 节 sed 切到阿里云 centos-vault,注意三条替换缺一不可(尤其 $contentdir/$releasever → 8.5.2111)。
Q2:装完 JDK 17 后 java -version 还是 1.8?
el8 的 maven 包依赖 java-1.8.0-openjdk 并把 alternatives 默认指到 1.8。两种修复:本文方式(显式 JAVA_HOME=/usr/lib/jvm/java-17-openjdk 并前插 PATH,作用域可控);或 alternatives --config java 全局切默认(影响整机,慎用)。
Q3:mvn compile 报 Invalid source release: 17?
Maven 还在 JDK 8 上跑。mvn -v 看 Java version 行,若为 1.8.x 说明当前会话没有 export,重新执行 4.4 节两行命令再构建。
Q4:Maven 3.5.4 太老,maven-compiler-plugin 3.11.0 兼容吗?
兼容。3.11.0 只要求 Maven 3.2.5+,实测 3.5.4 + JDK 17.0.1 正常编译 release=17 工程并运行通过全部验证。
Q5:加密时报 unsupported key transport encryption algorithm?
与操作系统无关,是程序入口漏了 org.apache.xml.security.Init.init(),算法映射表为空所致。加一行 Init.init(); 即修复,实测回显见第 1 篇 FAQ Q4 与第 3 篇 FAQ。
Q6:WSS4J 3.0.6 在 el8 上能不能用 JDK 11 跑?
可以。3.0.x 基线就是 JDK 11,dnf install java-11-openjdk-devel 后把 JAVA_HOME 指向 /usr/lib/jvm/java-11-openjdk 即可;本文选 17 是为与全系列篇章保持一致。
十、卸载与清理
移除验证工程、jar 集合与密钥库:
rm -rf /root/wss4j-demo /root/jar-run /root/wss4j-libs /root/keystores
ls /root/wss4j-demo 2>&1
ls: cannot access '/root/wss4j-demo': No such file or directory
移除 Maven 本地仓库中的 WSS4J 相关缓存(影响所有工程,慎用):
rm -rf $HOME/.m2/repository/org/apache/wss4j $HOME/.m2/repository/org/apache/santuario
卸载 JDK 与 Maven(仅当不再需要)。先以 -s 预演确认,无误后去掉 -s 真正执行:
dnf -s remove java-17-openjdk-devel maven
# 输出节选(实测首尾)
Dependencies resolved.
================================================================================================
Package Architecture Version Repository
================================================================================================
Removing:
java-17-openjdk-devel x86_64 1:17.0.1.0.12-2.el8_5 @AppStream
maven noarch 3.5.4-5.module_el8.5.0+927 @AppStream
确认无误后真正卸载:
dnf remove -y java-17-openjdk-devel maven && dnf autoremove -y
十一、参考链接
- Apache WSS4J 官方主页:https://ws.apache.org/wss4j/
- WSS4J 3.0.6 Maven 中央仓库坐标:https://repo1.maven.org/maven2/org/apache/wss4j/wss4j-ws-security-dom/
- 阿里云 CentOS Vault 镜像说明:https://mirrors.aliyun.com/centos-vault/
- Apache Santuario(XML 安全引擎)官方主页:https://santuario.apache.org/
- WS-Security 标准规范(OASIS):https://docs.oasis-open.org/wss/v1.1/wss-v1.1-spec-os-SOAPMessageSecurity-01.htm
- el8 JDK 17 包信息:
dnf info java-17-openjdk-devel