Tôi muốn cấu hình Xuân @MVC còn sơ khai ứng dụng của tôi Xuân RestTemplate với SSL cho giao tiếp với REST của cơ sở https ứng dụng, mà triển khai trên Máy chủ Tomcat (Mùa xuân 3, Tomcat 7). Tôi đã thực hiện cho đến nay các tác phẩm của tôi theo số refer this link. Bây giờ tôi không có bất kỳ ý tưởng làm thế nào để sử dụng những giấy chứng nhận tạo ra với Spring RestTemplate, Bất cứ ai có thể có một số ý tưởng xin vui lòng giúp tôi. Cảm ơn. Cho đến nay những điều tôi đã làm,Làm thế nào để cấu hình mùa xuân RestTemplate với SSL (trong mùa xuân @MVC)
// Xuân An xml Configurations
<http>
<intercept-url pattern="/login" access="IS_AUTHENTICATED_ANONYMOUSLY" requires-channel="https"/>
<http-basic/></http>
// Cấu hình cho phép SSL với Tomcat
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="C:\Users\Channa\.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS"/>
Đối với việc tạo ra Keys, chứng chỉ vv ,
// Tạo khách hàng một Các khóa máy chủ d:
F: \ jdk1.6.0_23 \ bin> keytool -genkey -keystore keystore_client -alias clientKey -dname "CN = localhost, OU = Dev, O = MyBusiness, L = Colombo, S = Westen , C = SL "
F: \ jdk1.6.0_23 \ bin> keytool -genkey -keystore keystore_server -alias serverKey-tên" CN = localhost, OU = Dev, O = MyBusiness, L = Colombo, S = Westen, C = SL"
// Tạo client và server chứng chỉ:
F: \ jdk1.6.0_23 \ bin> keytool -Xuất -alias clientKey -rfc -keystore keystore_client> client.cert F : \ Jdk1.6.0_23 \ bin> keytool -Xuất -alias serverKey -rfc -keystore keystore_server> server.cert
// giấy chứng nhận nhập để truststores tương ứng:
F: \ jdk1.6.0_23 \ bin> keytool -import -alias clientCert -file client.cert -keystore truststore_server F: \ jdk1.6.0_23 \ bin> keytool -import -alias serverCert -file server.cert -keystore truststore_client
// xuân RestTemplate cấu hình
<!--Http client-->
<bean id="httpClient" class="org.apache.commons.httpclient.HttpClient">
<constructor-arg ref="httpClientParams"/>
<property name="state" ref="httpState"/>
</bean>
<!--Http state-->
<bean id="httpState" class="com.org.imc.test.stub.http.CustomHttpState">
<property name="credentials" ref="usernamePasswordCredentials"/>
</bean>
<!--User name password credentials-->
<bean id="usernamePasswordCredentials" class="org.apache.commons.httpclient.UsernamePasswordCredentials"/>
<!--Http client-->
<bean id="httpClientFactory" class="org.springframework.http.client.CommonsClientHttpRequestFactory">
<constructor-arg ref="httpClient"/>
</bean>
<!--RestTemplate-->
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<constructor-arg ref="httpClientFactory"/>
</bean>
// Https URL sẽ truy cập
ResponseEntity<User> rECreateUser = restTemplate.postForEntity("https://127.0.0.1:8443/skeleton-1.0/login", user, User.class);
// ngoại lệ hiện tôi nhận:
org.springframework.web.client.ResourceAccessException: I/Lỗi O: sun.security.validator.ValidatorException: Xây dựng đường dẫn PKIX không thành công: sun.security.provider.certpath.SunCertPathBuilderException: không thể tìm thấy đường dẫn chứng nhận hợp lệ cho mục tiêu được yêu cầu; lồng nhau ngoại lệ là javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX xây dựng con đường thất bại: sun.security.provider.certpath.SunCertPathBuilderException: không thể tìm thấy con đường chứng nhận hợp lệ với mục tiêu yêu cầu
Có thể duy trì cert khách hàng ở mức độ máy chủ ứng dụng mà không cần cấu hình ở mức java? – Eranda
Bạn có thể nhập chứng chỉ vào tệp lưu trữ tin cậy tùy chỉnh, sau đó chỉ định nó như được mô tả ở đây: http://stackoverflow.com/a/18767045/157591 hoặc bạn có thể thử nghiệm với những thứ được mô tả ở đây http://stackoverflow.com/a/ 6755459/157591 –