


Der Java-Keystore implementiert die bidirektionale SSL-Authentifizierung [Client ist PHP und Java]
1. Erstellen Sie zunächst die serverseitige Umgebung:
Vorbereitungsarbeit: ein Tomcat6-, JDK7-, OpenSSL-, Javawebservice-Testprojekt
2. Konstruktionsprozess:
Referenz http: //blog.csdn.net/chow__zh/article/details/8998499
1.1 Serverzertifikat generieren
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:/SSL / server/tomcat.keystore -dname "CN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN" -validity 3650 -storepass zljzlj -keypass zljzlj
Hinweis:
keytool ist das vom JDK bereitgestellte Tool zur Zertifikatserstellung. Weitere Informationen zur Verwendung aller Parameter finden Sie unter keytool –help
-genkey zum Erstellen eines neuen Zertifikats
-v 🎜>-alias tomcat mit „tomcat“ als Alias des Zertifikats. Hier können Sie den
-keyalg RSA-spezifizierten Algorithmus
-keystore D:/SSL/server/tomcat.keystore Speicherpfad und Dateinamen ändern
-dname "CN=127.0.0.1,OU=zlj,O = zlj,L=Peking,ST=Peking,C=CN“ Die Identität des Zertifikatausstellers. Der CN muss hier nach der Ausstellung mit dem Zugriffsdomänennamen übereinstimmen. Da wir das Zertifikat aber selbst ausstellen, wird es dennoch eine Warnung geben, wenn Sie in einem Browser darauf zugreifen.
-validity 3650 Zertifikatsgültigkeitsdauer, in Tagen
-storepass zljzlj Zertifikatszugriffspasswort
-keypass zljzlj privater Zertifikatsschlüssel
1.2 Client-Zertifikat generieren
Befehl ausführen:
keytool ‐genkey ‐ v ‐Alias Client ‐keyalg RSA ‐storetype PKCS12 ‐keystore D:/SSL/client/client.p12 ‐dname „CN=client,OU=zlj,O=zlj,L=bj,ST=bj,C =CN“ ‐ Gültigkeit 3650 ‐storepass client ‐keypass client
Beschreibung:
Parameterbeschreibung ist die gleiche wie oben. Die Identität des -dname-Zertifikatausstellers kann sich von der vorherigen unterscheiden. Bisher besteht zwischen diesen beiden Zertifikaten keine Beziehung. Als nächstes gilt es, eine Vertrauensbeziehung zwischen den beiden aufzubauen.
1.3 Client-Zertifikat exportieren
Befehl ausführen:
keytool ‐export ‐alias client ‐keystore D:/SSL/client/client.p12 ‐storetype PKCS12 ‐storepass client ‐rfc ‐file D:/SSL/ client /client.cer
Beschreibung:
-export Export ausführen
-Datei Dateipfad der Exportdatei
1.4 Das Client-Zertifikat zur Serverzertifikat-Vertrauensliste hinzufügen
Befehl ausführen:
keytool ‐import ‐alias client ‐v ‐file D:/SSL/client/client.cer ‐keystore D:/SSL/server/tomcat.keystore ‐storepass zljzlj
Beschreibung:
Parameterbeschreibung ist die gleiche wie zuvor . Das hier angegebene Passwort ist das Zugangspasswort für das Serverzertifikat.
1.5 Serverzertifikat exportieren
Führen Sie den Befehl aus:
keytool -export -alias tomcat -keystore D:/SSL/server/tomcat.keystore -storepass zljzlj -rfc -file D:/SSL/server/ tomcat .cer
Anleitung:
Exportieren Sie das Serverzertifikat. Das hier angegebene Passwort ist gleichzeitig das Passwort für das Serverzertifikat.
1.6 Client-Vertrauensliste erstellen
Befehl ausführen:
keytool -import -file D:/SSL/server/tomcat.cer -storepass zljzlj -keystore D:/SSL/client/client.truststore -alias tomcat –noprompt
Anweisungen:
Lassen Sie den Client dem Serverzertifikat vertrauen
2. Konfigurieren Sie den Server so, dass er nur HTTPS-Verbindungen zulässt
2.1 Konfigurieren Sie /conf/server.xml im Tomcat-Verzeichnis
Xml-Code Sammlungscode
keystorePass="zljzlj" truststoreFile="D:/SSL/server/tomcat.keystore"
truststorePass="zljzlj" / >
Hinweis:
Dieser Inhalt in server.xml wurde ursprünglich auskommentiert. Wenn Sie den Standardport 443 von https verwenden möchten, ändern Sie bitte den Portparameter hier. ClientAuth="true" gibt die bidirektionale Zertifikatauthentifizierung an.
package test; import javax.xml.namespace.QName; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; /** * * @author gshen * */ public class TestEcVoteNotice { public static void main(String [] args) throws Exception { System.setProperty("javax.net.ssl.trustStorePassword","zljzlj"); System.setProperty("javax.net.ssl.keyStoreType","PKCS12") ; System.setProperty("javax.net.ssl.keyStore","D:/SSL/client/client.p12") ; System.setProperty("javax.net.ssl.keyStorePassword","client") ; System.setProperty("javax.net.debug", "all"); //wsdl地址 String endpoint = "https://192.168.1.146:8443/pro/ws/getInfoService?wsdl"; //http://jarfiles.pandaidea.com/ 搜索axis.jar并下载,Service类在axis.jar Service service = new Service(); //http://jarfiles.pandaidea.com/ 搜索axis.jar并下载,Call类在axis.jar Call call = null; try { call = (Call) service.createCall(); //设置Call的调用地址 call.setTargetEndpointAddress(new java.net.URL(endpoint)); //根据wsdl中 <wsdl:import location="https://192.168.10.24:8443/ShinService/HelloWorld?wsdl=HelloService.wsdl" //namespace="http://server.cxf.shinkong.cn/" /> , //<wsdl:operation name="findALL"> call.setOperationName(new QName("http://ws.task.xm.com/","sayHello")); //参数1对应服务端的@WebParam(name = "tableName") 没有设置名称为arg0 call.addParameter("id", XMLType.SOAP_STRING, javax.xml.rpc.ParameterMode.IN); //调用方法的返回值 call.setReturnType(org.apache.axis.Constants.XSD_STRING); //调用用Operation调用存储过程(以服务端的方法为准) String res = (String) call.invoke(new Object[] {"1"}); //调用存储过程 System.out.println(res); } catch (Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); } } }
openssl pkcs12 -in D:\SSL\client\client.p12 -out D:\SSL\client\client-cer.pem -clcerts
$params = array('id' => '2'); $local_cert = "./client-cer.pem"; set_time_limit(0); try{ //ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache $wsdl='https://192.168.1.146:8443/pro/ws/getInfoService?wsdl'; // echo file_get_contents($wsdl); $soap=new SoapClient($wsdl, array( 'trace'=>true, 'cache_wsdl'=>WSDL_CACHE_NONE, 'soap_version' => SOAP_1_1, 'local_cert' => $local_cert, //client证书信息 'passphrase'=> 'client', //密码 // 'allow_self_signed'=> true ) ); $result=$soap->sayHello($params); $result_json= json_encode($result); $result= json_decode($result_json,true); echo '结果为:' . json_decode($result['return'],true); }catch(Exception $e) { $result['success'] = '0'; $result['msg'] = '请求超时'; echo $e->getMessage(); } echo '>>>>>>>>>>>';
直接运行,也会出现附件中的结果,打完收工,憋了我整整三天时间,终于搞定了。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4
