如何修复 IPMI KVM JAVA BMC MD5withRSA 并被视为未签名错误

  知识点

像任何优秀的系统管理员一样,我让我的服务器和桌面端保持最新状态并一直打补丁。 但是,最近的 Java 更新破坏了我在 Dell、ASUS、IBM、HP、Supermicro 和 FreeNAS 迷你服务器上的 IPMI KVM Java Applet。 您将收到如下错误:

如何修复 IPMI KVM JAVA BMC MD5withRSA 并被视为未签名错误

未签名的应用程序请求不受限制地访问系统。 以下资源使用弱签名算法 MD5withRSA 进行签名,并被视为未签名。

错误继续如下:

<?xml version="1.0" encoding="UTF-8"?>
 
<jnlp spec="1.0+" codebase="https://192.168.2.92:80/Java">
     <information>
        <title>JViewer</title>
        <vendor>American Megatrends, Inc.</vendor>
        <description kind="one-line">JViewer Console Redirection Application</description>
        <description kind="tooltip">JViewer Console Redirection Application</description>
        <description kind="short">
            JViewer enables a user to view the video display of managed server via KVM.  
            It also enables the user to redirect his local keyboard, mouse for managing the server remotely.
        </description>
    </information>
	<security>
		<all-permissions/>
	</security>
    <resources>
        <j2se version="1.5+"/>
        <jar href="release/JViewer.jar"/>
    </resources>
    <resources>
        <j2se version="1.5+"/>
        <jar href="release/JViewer-SOC.jar"/>
    </resources>
    <resources os="Windows" arch="x86">
    	<j2se version="1.5+"/>
    	<nativelib href="release/Win32.jar"/>
    </resources>    
    <resources os="Windows" arch="amd64">
           <j2se version="1.5+"/>
           <nativelib href="release/Win64.jar"/>
    </resources>
    <resources os="Linux" arch="x86">
    	<j2se version="1.5+"/>
    	<nativelib href="release/Linux_x86_32.jar"/>
    </resources>    
    <resources os="Linux" arch="i386">
    	<j2se version="1.5+"/>
    	<nativelib href="release/Linux_x86_32.jar"/>
    </resources>    
	<resources os="Linux" arch="x86_64">
	 	<j2se version="1.5+"/>
    	<nativelib href="release/Linux_x86_64.jar"/>
	</resources>	
	<resources os="Linux" arch="amd64">
	 	<j2se version="1.5+"/>
    	<nativelib href="release/Linux_x86_64.jar"/>
	</resources>
    <resources os="Mac OS X" arch="i386">
	<j2se version="1.5+"/>
	<nativelib href="release/Mac32.jar"/>
    </resources> 
    <resources os="Mac OS X" arch="x86_64">
	<j2se version="1.5+"/>
	<nativelib href="release/Mac64.jar"/>
    </resources> 
    <application-desc>
        <argument>-apptype</argument>
<argument>JViewer</argument>
<argument>-hostname</argument>
<argument>192.168.2.92</argument>
<argument>-kvmtoken</argument>
<argument>rjhWlxU7CiPFlKUE</argument>
<argument>-kvmsecure</argument>
<argument>0</argument>
<argument>-kvmport</argument>
<argument>80</argument>
<argument>-vmsecure</argument>
<argument>0</argument>
<argument>-cdstate</argument>
<argument>1</argument>
<argument>-fdstate</argument>
<argument>1</argument>
<argument>-hdstate</argument>
<argument>1</argument>
<argument>-cdnum</argument>
<argument>1</argument>
<argument>-fdnum</argument>
<argument>1</argument>
<argument>-hdnum</argument>
<argument>1</argument>
<argument>-userpriv</argument>
<argument>4</argument>
<argument>-lang</argument>
<argument>EN</argument>
<argument>-websecureport</argument>
<argument>443</argument>
<argument>-singleportenabled</argument>
<argument>1</argument>
<argument>-webcookie</argument>
<argument>yqvHjIVRoAPUDLjNGVUEHq6PNiXUEEjN000</argument>
 
    </application-desc>
</jnlp>

MD5 添加到 jdk.jar.disabledAlgorithms 安全属性

Oracle 对 MD5 签名 JAR 文件的方式添加了新限制 验证

此 JDK 版本对如何验证 MD5 签名的 JAR 文件引入了新限制。 如果签名的 JAR 文件使用 MD5,签名验证操作将忽略签名并将 JAR 视为未签名。 这可能发生在以下使用签名 JAR 文件的应用程序类型中:

小程序或 Web Start 应用程序
在启用了 SecurityManager 的情况下运行并配置了策略文件的独立或服务器应用程序,该文件根据 JAR 文件的代码签名者授予权限。

禁用算法的列表通过 java.security 文件中的安全属性 jdk.jar.disabledAlgorithms 进行控制。 此属性包含加密签名的 JAR 文件的禁用算法和密钥大小的列表。

修改相应文件

您需要找到一个名为 java.security 的文件并注释掉 jdk.jar.disabledAlgorithms 行,来自:

jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024

到:

#jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024

在 Linux/macOS 和类 Unix 系统上,可以使用如下 find 命令来定位名为 java.security 的文件:
$ sudo find / -iname java.security

或者
$ locate java.security

在我的 macOS 上,我在以下位置找到了文件并编辑了 vim 命令
$ sudo vi /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/java.security

如何修复 IPMI KVM JAVA BMC MD5withRSA 并被视为未签名错误

长期解决方案

我认为从长远来看,硬件供应商必须修复他们的 BMC/IPMI 固件。 一些供应商开始支持基于 HTML 5 的 IPMI/BMC 客户端。 HTML5 客户端将为我们所有人替换基于 Java 浏览器的插件。