当前位置: 首页 > 面试题库 >

在Google App Engine Java应用程序中加载自定义密钥存储

冉伯寅
2023-03-14
问题内容

我想使用URLFetch服务在Google
App Engine应用程序中打开 HTTPS* 连接。为了能够 验证我的应用正在 与之通信
的服务器的SSL证书,我使用了自己的密钥库文件
。我希望在加载我的应用程序时(即在执行任何HTTPS请求之前)在热身请求中读取此文件。密钥库文件是我的WAR文件的一部分。

*

TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());  
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(ClassLoader.getSystemResourceAsStream("myKeystoreFile"), "password".toCharArray());  
trustManagerFactory.init(keystore);

TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();  
SSLContext sslContext = SSLContext.getInstance("SSL");  
sslContext.init(null, trustManagers, null);

HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());

但是,我不能使用这种方法,因为HttpURLConnection在GAE的JRE白名单上,而HttpsUrlConnection不在。

还有另一种在GAE中使用自定义密钥库的方法吗?我没有在GAE文档中找到任何与此有关的信息。
看起来,虽然Google的URLFetch服务支持HTTPS,但密钥库无法自定义。 这样对吗?

如果这不可能,那么该方法总体上仍然有效吗?还是 有其他方法仍然可以让我验证SSL证书?

更新

2009年,来自Google的App Engine开发人员Nick
Johnson在https://groups.google.com/d/topic/google-appengine-
python/C9RSDGeIraE/discussion上说:

urlfetch API不允许您指定自己的客户端证书,因此很遗憾,目前尚无法实现。

这还正确吗? 如果App Engine中的每个HTTP请求都依赖于URLFetch,则这意味着自定义证书根本无法在GAE中使用。


问题答案:

你应该注册为
受信任的测试人员

出站套接字支持
。在“ 所需功能”下, 他们注册了SSL。如果将支持JDK SSL API的更多部分,则构建类似这样的东西将很简单。



 类似资料:
  • 要启用SSL很简单:只需填充以下属性: 但是我需要这种额外的行为:我需要一个自定义的加载逻辑,而不是从特定路径(server.ssl.key-store)加载证书:我需要使用例如AWS秘密服务或类似的方法来实现这种自定义方式。 那么,有可能吗?是否有可能在Spring中扩展这种默认行为,指定自定义加载器或类似的东西?

  • 我想用AES加密实现一个自定义密钥,我找到了下面的实现和细节。 但我有以下几点疑虑: 如果我要使用典型的示例代码,例如: null https://www.securecoding.cert.org/confluence/display/java/msc61-j.+do+not+use+insecure+or+weak+cryptographic+算法 如何在Java中生成SALT值?

  • 我是拉威尔的新手,我正在尝试使用Artisan命令。。。 它显示。。。 Laravel开发服务器已启动:http://127.0.0.1:8000 但是,当我手动输入时,它不会自动启动http://127.0.0.1:8000 它显示了这个错误: RuntimeException未指定应用程序加密密钥。 有什么想法吗?我正在使用Laravel framework 5.5-dev。

  • 我正在尝试运行和测试一个SpringBoot应用程序,该应用程序已打包成zip文件并在Linux虚拟机上解压。zip包含应用程序所需的一切(至少据我所知)。当我尝试执行应用程序时,它会启动,但很快就会失败,因为它无法加载SSH/TLS安全通信所需的密钥库。 我的application.yml如下: 测试系统上的目录结构如下: 下面是抛出的异常: Spring Boot运行时显然可以看到并访问目录,

  • 我正在尝试实现AES自定义密码加密,并希望了解下面的代码。 我不太理解为什么需要指定密钥大小256“pbekeyspec(password,salt,65536,256)”,而我已经使用了“pbkdf2withHMACSHA256”,它应该生成256位的SecretKey。 并且在使用我的密码+salt生成密钥之后,为什么我需要将它与SecretKeySpec作为AES算法关联起来。

  • 我的客户端应用程序生成的数据在设备上加密。加密密钥通过HTTPS发送给Azure函数,该函数使用Azure密钥库存储加密密钥,以便其他授权的客户机可以获得加密密钥并解密数据。 下面是我的Azure函数中执行将加密密钥(秘密)保存在密钥库中的工作的一段代码: 问题 这样的设计是不是对Azure Key Vault的适当使用?