ssl 使用PKCS11密钥库类型在Sping Boot 上的Web应用程序中建立TLS连接

68bkxrlz  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(267)

我试着用Sping Boot 为我的Web应用程序构建设置TLS连接。application.properties

  1. server.port=9999
  2. server.ssl.key-store-password=password
  3. server.ssl.key-store=NONE
  4. server.ssl.trust-store=C:/newcert/truststore.keystore
  5. server.ssl.trust-store-password=password
  6. server.ssl.key-store-provider=SunPKCS11-Thales
  7. server.ssl.key-store-type=PKCS11
  8. server.ssl.key-alias=test_key_ocs2

在java.security文件(%JAVA_HOME%/jre/lib/security/)中包含行:

  1. security.provider.11=sun.security.pkcs11.SunPKCS11 C:/cert/pkcs11.cfg

在pkcs11.cfg文件中包含:

  1. name=Thales
  2. library = C:\nCipher\nfast\toolkits\pkcs11\cknfast-64.dll
  3. slot=761406613

但运行我的应用程序后,我得到错误:

  1. INFO 16788 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
  2. ERROR 16788 --- [ main] org.apache.tomcat.util.net.SSLUtilBase : Failed to load keystore type [PKCS11] with path [file:/C:/ProjectsGit/ssl-server/NONE] due to [Initialization failed]
  3. java.security.ProviderException: Initialization failed
  4. at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:376) ~[sunpkcs11.jar:1.8.0_161]
  5. at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:103) ~[sunpkcs11.jar:1.8.0_161]
  6. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_152]
  7. at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_152]
  8. at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_152]
  9. at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_152]
  10. at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:224) ~[na:1.8.0_152]
  11. at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:206) ~[na:1.8.0_152]
  12. at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_152]
  13. at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206) ~[na:1.8.0_152]
  14. at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187) ~[na:1.8.0_152]
  15. at sun.security.jca.ProviderList.getProvider(ProviderList.java:233) ~[na:1.8.0_152]
  16. at sun.security.jca.ProviderList.getIndex(ProviderList.java:263) ~[na:1.8.0_152]
  17. at sun.security.jca.ProviderList.getProviderConfig(ProviderList.java:247) ~[na:1.8.0_152]
  18. at sun.security.jca.ProviderList.getProvider(ProviderList.java:253) ~[na:1.8.0_152]
  19. at sun.security.jca.GetInstance.getService(GetInstance.java:81) ~[na:1.8.0_152]
  20. at sun.security.jca.GetInstance.getInstance(GetInstance.java:206) ~[na:1.8.0_152]
  21. at java.security.Security.getImpl(Security.java:698) ~[na:1.8.0_152]
  22. at java.security.KeyStore.getInstance(KeyStore.java:896) ~[na:1.8.0_152]
  23. at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:187) [tomcat-embed-core-9.0.27.jar:9.0.27]
  24. at org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:206) [tomcat-embed-core-9.0.27.jar:9.0.27]
  25. at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:283) [tomcat-embed-core-9.0.27.jar:9.0.27]
  26. at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247) [tomcat-embed-core-9.0.27.jar:9.0.27]
  27. at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97) [tomcat-embed-core-9.0.27.jar:9.0.27]
  28. at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71) [tomcat-embed-core-9.0.27.jar:9.0.27]
  29. at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:218) [tomcat-embed-core-9.0.27.jar:9.0.27]
  30. at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1124) [tomcat-embed-core-9.0.27.jar:9.0.27]
  31. at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1210) [tomcat-embed-core-9.0.27.jar:9.0.27]
  32. at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:586) [tomcat-embed-core-9.0.27.jar:9.0.27]
  33. at org.apache.catalina.connector.Connector.startInternal(Connector.java:1005) [tomcat-embed-core-9.0.27.jar:9.0.27]
  34. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [tomcat-embed-core-9.0.27.jar:9.0.27]
  35. at org.apache.catalina.core.StandardService.addConnector(StandardService.java:227) [tomcat-embed-core-9.0.27.jar:9.0.27]
  36. at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:278) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  37. at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:197) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  38. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:297) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  39. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:163) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  40. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) [spring-context-5.2.1.RELEASE.jar:5.2.1.RELEASE]
  41. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  42. at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  43. at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  44. at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  45. at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  46. at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  47. at com.example.sslserver.SslServerApplication.main(SslServerApplication.java:10) [classes/:na]
  48. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_152]
  49. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_152]
  50. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_152]
  51. at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_152]
  52. at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) [idea_rt.jar:na]
  53. Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_FUNCTION_FAILED
  54. at sun.security.pkcs11.wrapper.PKCS11.C_Initialize(Native Method) ~[sunpkcs11.jar:1.8.0_161]
  55. at sun.security.pkcs11.wrapper.PKCS11$SynchronizedPKCS11.C_Initialize(PKCS11.java:1545) ~[sunpkcs11.jar:1.8.0_161]
  56. at sun.security.pkcs11.wrapper.PKCS11.getInstance(PKCS11.java:157) ~[sunpkcs11.jar:1.8.0_161]
  57. at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:330) ~[sunpkcs11.jar:1.8.0_161]
  58. ... 48 common frames omitted
  59. INFO 16788 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
  60. INFO 16788 --- [ main] ConditionEvaluationReportLoggingListener :
  61. Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
  62. ERROR 16788 --- [ main] o.s.boot.SpringApplication : Application run failed
  63. org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server
  64. at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:215) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  65. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:297) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  66. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:163) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  67. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) ~[spring-context-5.2.1.RELEASE.jar:5.2.1.RELEASE]
  68. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  69. at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  70. at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  71. at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  72. at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  73. at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  74. at com.example.sslserver.SslServerApplication.main(SslServerApplication.java:10) [classes/:na]
  75. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_152]
  76. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_152]
  77. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_152]
  78. at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_152]
  79. at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) [idea_rt.jar:na]
  80. Caused by: java.lang.IllegalArgumentException: standardService.connector.startFailed
  81. at org.apache.catalina.core.StandardService.addConnector(StandardService.java:231) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  82. at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:278) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  83. at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:197) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
  84. ... 15 common frames omitted
  85. Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed
  86. at org.apache.catalina.connector.Connector.startInternal(Connector.java:1008) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  87. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  88. at org.apache.catalina.core.StandardService.addConnector(StandardService.java:227) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  89. ... 17 common frames omitted
  90. Caused by: java.lang.IllegalArgumentException: Failed to load keystore type [PKCS11] with path [file:/C:/ProjectsGit/ssl-server/NONE] due to [Initialization failed]
  91. at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  92. at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  93. at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:218) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  94. at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1124) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  95. at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1210) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  96. at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:586) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  97. at org.apache.catalina.connector.Connector.startInternal(Connector.java:1005) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  98. ... 19 common frames omitted
  99. Caused by: java.io.IOException: Failed to load keystore type [PKCS11] with path [file:/C:/ProjectsGit/ssl-server/NONE] due to [Initialization failed]
  100. at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:229) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  101. at org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:206) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  102. at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:283) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  103. at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  104. at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  105. ... 25 common frames omitted
  106. INFO 16788 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
  107. Process finished with exit code 1

请告诉我我做错了什么?
也许有其他方法可以使用PKCS 11提供者为服务请求建立TLS连接(定义KeyManager和TrustManager,使用SSLSocketFactory等),但我不是很了解,任何示例都非常有用。

c90pui9n

c90pui9n1#

它正在尝试在以下位置查找文件:文件:/C:/项目Git/ssl服务器/无

  1. Caused by: java.io.IOException: Failed to load keystore type [PKCS11] with path [file:/C:/ProjectsGit/ssl-server/NONE]

你有这个地方的任何参考资料吗?

8oomwypt

8oomwypt2#

This issue已在Sping Boot v2.2.7和v3.0.1中修复。

相关问题