jdk8u171开始增加了jceks.key.serialFilter属性限制证书序列化的类,增强安全性,不在这个属性中的类将会被拒绝Rejected, 从而导致kms服务重启后需要从keystore中反序列化加载SecretKeyEntry加密密钥时失败从而无法recover还原密钥信息。只要将被Rejected的类加入jre/lib/security/java.security中的jceks.key.serialFilter中就可以了。

jceks.key.serialFilter = java.lang.Enum;java.security.KeyRep;java.security.KeyRep$Type;javax.crypto.spec.SecretKeySpec;jceks.key.serialFiltercom.sun.crypto.provider.SealedObjectForKeyProtector;org.apache.hadoop.crypto.key.**;!*

KMS重启后无法查看key的metadata信息了,报错如下:

java.io.IOException: Can't recover key for testkey from keystore file:/home/hadoop/kms.jks
        at org.apache.hadoop.crypto.key.JavaKeyStoreProvider.getMetadata(JavaKeyStoreProvider.java:422)
        at org.apache.hadoop.crypto.key.CachingKeyProvider$CacheExtension$2.load(CachingKeyProvider.java:65)
        at org.apache.hadoop.crypto.key.CachingKeyProvider$CacheExtension$2.load(CachingKeyProvider.java:62)
......

Caused by: java.security.UnrecoverableKeyException: Rejected by the jceks.key.serialFilter or jdk.serialFilter property
        at com.sun.crypto.provider.KeyProtector.unseal(KeyProtector.java:399)
        at com.sun.crypto.provider.JceKeyStore.engineGetKey(JceKeyStore.java:144)
        at java.security.KeyStore.getKey(KeyStore.java:1023)
        at org.apache.hadoop.crypto.key.JavaKeyStoreProvider.getMetadata(JavaKeyStoreProvider.java:408)
        ... 61 more

先查看异常抛出位置的代码,异常是hadoop的JavaKeyStoreProvider以及java的jre\lib\ext\sunjce_provider.jar下的KeyProtector类。

报错在jdk的代码里应该和hadoop无关了,根据报错信息Rejected by the jceks.key.serialFilter or jdk.serialFilter property查找下这个jceks.key.serialFilter是什么。

Java™ SE Development Kit 8, Update 171 Release Notes

大意就是jdk8新特性,不在这个jceks.key.serialFilter允许的类型中的自定义类会被拒绝使用。那只要从kms异常日志中找到hadoop使用的类型加上去就可以了。

cd ${JAVA_HOME}/jre/lib/security

vi java.security

找到jceks.key.serialFilter的位置在!*前增加jceks.key.serialFiltercom.sun.crypto.provider.SealedObjectForKeyProtector;org.apache.hadoop.crypto.key.**;

修改为

jceks.key.serialFilter = java.lang.Enum;java.security.KeyRep;java.security.KeyRep$Type;com.sun.crypto.provider.SealedObjectForKeyProtector;javax.crypto.spec.SecretKeySpec;org.apache.hadoop.crypto.key.**;!*

分隔符是;

!*表示除了已配置的,其他所有类都拒绝

在hadoop的core-site.xml可以设置

<property>

<name>hadoop.security.crypto.jceks.key.serialfilter</name>

<value>java.lang.Enum;java.security.KeyRep;java.security.KeyRep$Type;javax.crypto.spec.SecretKeySpec;com.sun.crypto.provider.SealedObjectForKeyProtector;org.apache.hadoop.crypto.key.**;!*</value>

</property>

不过,jdk的配置优先级高,以jdk的java.security中jceks.key.serialFilter配置为准。

Hadoop2.7.7 API: core-site.xml 解析_张伯毅的博客-CSDN博客

Java™ SE Development Kit 8, Update 171 Release Notes

修改jceks.key.serialFilter解决KMS重启后Can‘t recover key for testkey from keystore file相关推荐

  1. JAVA环境配置及如何解决win10重启后环境配置失效的问题

    一.配置JAVA环境 1.JDK的下载与安装 进入官网下载对应版本 注意:安装路径最好不要包含中文或空格等特殊字符,最好使用纯英文目录 2.配置环境变量的步骤 (1)按下win+E键,找到此电脑,右键 ...

  2. 如何解决 kubernetes 重启后,启来不来的问题

    如何解决 kubernetes 重启后,启来不来的问题 参考文章: (1)如何解决 kubernetes 重启后,启来不来的问题 (2)https://www.cnblogs.com/jackluo/ ...

  3. Ubuntu修改/etc/resolv.conf 中DNS重启后DNS被重置的解决方法

    起因是VMware下的ubuntu上不了网了,但是可以ping通主机,也能ping通dns的地址. 尝试修改了dns地址,在几个地方都试着修改之后,最终只在/etc/resolv.conf 处修改有效 ...

  4. tomcat修改tomcat-users.xml文件,服务器重启后又自动还原

    tomcat配置用户管理权限,修改tomcat-users.xml文件 在tomcat目录中找到/conf/tomcat-users.xml,修改 <tomcat-users>     & ...

  5. C#访问网络共享文件夹,带用户名密码域,解决电脑重启后访问不到网络文件夹

    问题:winform访问网络共享文件夹,电脑重启后访问不到指定目录 原因:访问网络共享文件夹目录需要相关的用户凭据,文件资源管理器可以记住凭据,但是电脑重启后直接用软件访问网络文件夹路径是没有凭据的, ...

  6. 计算机重启后无法连接网络,简单几步解决win10重启后网络无法连接的问题

    电脑操作系统在使用的时候经常会被一些问题所困扰,近日就有使用win10精简版系统的用户表示自己的电脑出现了重启后网络无法连接的问题,不知道怎么去解决很是苦恼.所以今天小编为大家整理分享的就是关于win ...

  7. Win10 解决电脑重启后 需重新设置双网卡共享问题

    问题描述: 双网卡共享:开发需要,工位只有一个网口,但是电脑和路由两个设备要用.因此使用双网卡共享Internet,主机连接有线网口,通过设置共享一个子网出来,连接路由器,这样路由也可以上网. Win ...

  8. 【环境配置】解决Ubuntu重启后Nvidia驱动消失的问题

    问题出现的原因是因为重启ubuntu的内核进行了更新,提供了一些新的特性,但是更新后的ubantu内核导向的是最新的显卡驱动,所以导致你之前安装的显卡驱动有,但是因为内核的指向发生改变导致找不到. 怎 ...

  9. 题外-解决mac重启后git无法使用

    只是个小笔记,以防以后遇到再找. 解决办法 每次mac重启.更新系统会写在xcode 在终端输入xcode-select --install 重新下载xcode 重启编辑器里的终端就可以用了

最新文章

  1. android monitor 汉化
  2. 努比亚红魔有人脸识别_魅族魅蓝6T、努比亚红魔Mars电竞手机、华为畅享10Plus对比...
  3. 【附10】kibana创建新的index patterns
  4. spark2.4.5源码编译成hadoop-2.6.0-cdh5.15.1
  5. 【渝粤教育】电大中专电子商务网站建设与维护 (22)作业 题库
  6. 数据科学 IPython 笔记本 8.3 Matplotlib 可视化
  7. HTML下的list w3c,W3.CSS Lists (列表)
  8. python123-python123练习题.doc
  9. python闭包技巧_案例详析:Python闭包与nonlocal关键字
  10. windowsf进程管理器中进程解释
  11. ASP.NET验证码
  12. js 容易忽略的小知识点
  13. Apollo详解之canbus模块——车辆底层协议调试
  14. python找最长的单词_318. 最长单词长度乘积(Python)
  15. 四轴平面机器人手眼标定方法,eye-in-hand,亲测可用(草稿,后期整理)
  16. 冲突域和碰撞域的理解
  17. 离婚时夫妻共同债务和个人债务如何区分
  18. 指数基金(一):宽基指数简介
  19. 看完知乎轮子哥的编程之路,我只想说,收下我的膝盖...
  20. Python数据分析之pandas(保姆级教程)

热门文章

  1. 【推荐实践】内容分发场景的多目标架构实践
  2. 【报告分享】2021年全国毕业生起薪点薪酬报告.pdf(附下载链接)
  3. 【会话推荐】ICDM论文:探索跨会话信息感知的推荐模型
  4. 推荐系统中稀疏特征 Embedding 的优化表示方法
  5. 【报告分享】2019年大数据行业研究报告.pdf(附下载链接)
  6. ubuntu软件源更换方法
  7. 浙大PAT的大量感悟
  8. 腾讯广告X中科院计算所WWW2021论文:在线广告中的探索与优化
  9. 【复赛前排分享(一)】上分有路勤为径,大神教你剖析提分点
  10. vue项目云服务器,vue项目云服务器