我开发了一个安全的Spring BootRest Api,使用基本的auth头,现在我试图添加SSL来防止中间人攻击,就像Spring教程建议的那样,所以我通过生成密钥库来激活Spring的SSL安全性。我添加到资源中的JKS。服务器工作正常。
现在我有了一个JavaFX客户机,在那里我使用Unirest Api来执行请求,但我不知道如何更新我的客户机以成功地向我的服务器执行get/post请求。
我尝试了很多教程,但都不起作用,我不想禁用ssl
以下是我的spring boot配置:
# The format used for the keystore
server.ssl.key-store-type=JKS
# The path to the keystore containing the certificate
server.ssl.key-store=classpath:keystore.jks
# The password used to generate the certificate
server.ssl.key-store-password=mypass
# The alias mapped to the certificate
server.ssl.key-alias=tomcat
当我接受铬合金证书时,我的服务器开始使用邮递员很好。
对于我的java客户端,我使用以下代码段:
public class MainApp extends Application {
private static Stage parent;
private static Parent root;
static
{
System.setProperty("javax.net.ssl.trustStore","c:/ssl/keystore.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "mypass");
System.setProperty("javax.net.ssl.keyStore", "c:/ssl/keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "mypass");
}
@Override
public void start(Stage stage) throws Exception {
Unirest.setHttpClient(HttpClients.createSystem());
root = FXMLLoader.load(getClass().getResource("/fxml/Scene.fxml"));
parent = stage;
Scene scene = new Scene(root);
scene.getStylesheets().add("/styles/Styles.css");
stage.initStyle(StageStyle.TRANSPARENT);
scene.setFill(Color.TRANSPARENT);
stage.setTitle("JavaFX and Maven");
// stage.setOpacity(0.2);
stage.setScene(scene);
stage.show();
}
如你所见,我正试图在应用程序启动中配置我的Unirest http pClient
HttpResponse<String> asJson = Unirest.get("http://localhost:8181/logins/login/?us_username=" + username.getText() + "&us_pwdusr=" + Crypto.getSha(password.getText()))
.header("authorization", "Basic " + value)
.header("cache-control", "no-cache").asString();
但是当我在服务器上执行get方法时(我在服务器中激活了从8181和8080到8443的重定向),我得到了以下错误
原因:com。马沙佩。unirest。http。例外。UnirestException:javax。网ssl。SSLPeerUnverifiedException:的证书与com上的任何主题替代名称[]都不匹配。马沙佩。unirest。http。HttpClientHelper。请求(HttpClientHelper.java:143)访问com。马沙佩。unirest。要求基本要求。easypos上的asString(BaseRequest.java:56)。easyposclientfx。FXMLController。登录(FXMLController.java:130)。。。还有59个
原因:javax。网ssl。SSLPeerUnverifiedException:的证书与组织中的任何主题替代名称[]都不匹配。阿帕奇。http。康涅狄格州。SSLConnectionSocketFactory。在org上验证主机名(SSLConnectionSocketFactory.java:467)。阿帕奇。http。康涅狄格州。SSLConnectionSocketFactory。在org上创建LayeredSocket(SSLConnectionSocketFactory.java:397)。阿帕奇。http。康涅狄格州。SSLConnectionSocketFactory。org上的connectSocket(SSLConnectionSocketFactory.java:355)。阿帕奇。http。impl。conn.DefaultHttpClientConnectionOperator。在org上连接(DefaultHttpClientConnectionOperator.java:142)。阿帕奇。http。impl。conn.poollighttpclientconnectionmanager。在org上连接(poollighttpclientconnectionmanager.java:373)。阿帕奇。http。impl。执行链。主要客户。在org上建立路由(MainClientExec.java:381)。阿帕奇。http。impl。执行链。主要客户。在org上执行(MainClientExec.java:237)。阿帕奇。http。impl。执行链。ProtocolExec。在org上执行(ProtocolExec.java:185)。阿帕奇。http。impl。执行链。RetryExec。在org上执行(RetryExec.java:89)。阿帕奇。http。impl。执行链。重定向执行器。在org上执行(RedirectExec.java:111)。阿帕奇。http。impl。客户内部HttpClient。doExecute(InternalHttpClient.java:185)位于org。阿帕奇。http。impl。客户可关闭的HttpClient。在org上执行(CloseableHttpClient.java:83)。阿帕奇。http。impl。客户可关闭的HttpClient。在org上执行(CloseableHttpClient.java:108)。阿帕奇。http。impl。客户可关闭的HttpClient。在com上执行(CloseableHttpClient.java:56)。马沙佩。unirest。http。HttpClientHelper。请求(HttpClientHelper.java:138)。。。还有61个
试着读这篇文章,我明白我的certeficate别名或名称可能是所有我的certeficate没有在系统中注册
作为对这个想法的回应,我确实在java jre环境中将certeficate添加到了cacerts中,但仍然存在相同的错误
我该怎么做才能解决这个问题?
这是建议的证书
您遇到的例外情况如下所示:
客户机系统的java密钥库(客户机应用程序正在使用的JRE)正在向服务提供商请求证书,当服务提供商收到证书时,它无法将服务器的主题替代名称与其匹配。
示例:您正在像这样调用您的Web服务http://localhost:8181/logins/login
但是安装在REST生产者服务上的证书有一个主题名称,如“abc.com”,这在localhost和abc.com比较之间造成了不匹配,因此引发了错误。
为了在本地测试服务和客户端交互,您可以使用以下任何技术:
您可以分享自签名证书的屏幕截图,如下图所示:
它将帮助社区探索更多选项,更好地帮助你。
是否可以配置多个< code >安全配置? 使用s可以为OAuth客户端设置Client-ID和Secret: 对于单个客户来说,它的工作就像魅力一样: 我找不到任何方法将安全方案与不同的安全配置相关联。
我想做的是将这个JerseyClientConfig应用为所有创建的客户端的默认配置(不想每次构造客户端istance时都创建配置实例)。 是否可以在web.xml中设置它,就像我对服务器配置那样? 我在正式文档中没有找到任何关于它的信息。
客户端配置项设置示例 lookoutConfig.setProperty(LookoutConfig.LOOKOUT_AGENT_HOST_ADDRESS,"127.0.0.1"); 客户端配置项说明 配置项 对应 SpringBoot 配置项 默认配置值 说明 lookout.enable com.alipay.sofa.lookout.enable true 功能开关,默认是 true。如
null SAP对其服务的评价: 用于XML签名的消息格式 SOAP消息必须包括以下数据:
我正在尝试使用swagger codegen maven插件(版本3.0.0)生成的ApiClient,从我的Spring Boot应用程序中使用OAuth2安全的REST API。身份验证服务器(keycoat)提供了一个JWT和刷新令牌,但我不知道如何最好地处理bean中的令牌。现在我的豆子看起来像这样: 问题是:获取令牌和处理刷新令牌的最佳方法是什么? 编辑:为了获得令牌,我想使用客户端ID
问题:CXF能否基于WS-SecurityPolicy文件自动为客户端配置WS-Security? 如果是的话,是否有任何关于实际这样做的文件?我花了几个小时查看CXF站点并进行搜索,但没有找到答案。 CXF留档显示“CXF 2.2引入了对使用WS-SecurityPolicy配置WSS4J的支持,而不是WS-Security页面上记录的自定义配置”,并且还显示“在CXF 2.2中,如果cxf-r