Okay, ich arbeite mit diesem Code unten, um mich über x.509 Zertifikate zu unterrichten. Meine Frage ist, soll ich eine Cert- oder Speicherdatei irgendwo anders erzeugen und dann die Datei an das Projekt anhängen? Oder soll das Projekt all das im Programm generieren? Mein Fehler ist, dass es die Speicherdatei nicht finden kann.x.509 Cert - Wie erstelle ich eine Geschäftsdatei?
Antwort
Grundsätzlich erwarten diese beiden Programme, dass die Zertifikate und der Keystore bereits erstellt wurden, mit den Namen user.store
und und dass sich diese zwei Dateien in dem Ordner befinden, aus dem die Programme gestartet werden.
Um diese Datei zu generieren, können Sie keytool
aus Ihrer Java-Distribution verwenden, um einen Schlüsselspeicher und ein Zertifikat zu erstellen, und dann können Sie das öffentliche Zertifikat exportieren.
Hier ist, was der Server Schritt für Schritt:
int port = 7999;
ServerSocket server = new ServerSocket(port);
Socket s = server.accept();
ObjectInputStream is = new ObjectInputStream(s.getInputStream());
Der Server öffnet einen Socket auf Port 7999
und einige Inhalte erwarten.
//Read the keystore and retrieve the server's private key
//Default keystore is jks
KeyStore ks = KeyStore.getInstance("jks");
ks.load(new FileInputStream("user.store"), password);
PrivateKey dServer = (PrivateKey)ks.getKey(aliasname, password);
Es wird einen Schlüsselspeicher im Aus dieser Schlüsselspeicher user.store
(relative Datei zu dem Sie Ihr Programm lauched. Aufgerufene Datei befindet, ist es, den privaten Schlüssel, dessen bekommt alias ist aliasname
("user"
in Ihrem Fall).
//Decrypt: server's private key
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
byte[] in = (byte[]) is.readObject();
cipher.init(Cipher.DECRYPT_MODE, dServer);
byte[] plaintText = cipher.doFinal(in);
System.out.println("The plaintext is: " + new String(plaintText));
server.close();
es entschlüsselt der Inhalt an die Buchse senden, indem sie mit dem privaten Schlüssel und auf der Standardausgabe (Konsole typisch) druckt
Jetzt für die Kunden:
String host = "localhost";
int port = 7999;
Socket s = new Socket(host, port);
ObjectOutputStream os = new ObjectOutputStream(s.getOutputStream());
Es verbindet sich mit dem Socket an Port 7999
//Client loads server's cert
InputStream inStream = new FileInputStream("crypt.cer");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);
erhalten das öffentliche Zertifikat des Servers aus der Datei crypt.cer
(wieder relativ) Dann wird überprüft die Gültigkeit des Zertifikats.
//Get public key from cert
RSAPublicKey eServer = (RSAPublicKey) cert.getPublicKey();
//Encrypt with RSA as key generation algorithm
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, eServer);
byte[] cipherText = cipher.doFinal(message.getBytes());
System.out.println("Ciphertext: " + cipherText);
os.writeObject(cipherText);
os.flush();
os.close();
s.close();
input.close();
Diese verschlüsseln die Nachricht (die der Benutzer eingegeben hat) und senden sie an den Server.
Vielen Dank! Ich weiß es wirklich zu schätzen, wie du mir jeden Teil erklärt hast. Macht jetzt viel mehr Sinn. – RockOn
Okay, ich habe den Schlüssel und Cert. Es funktioniert bis zu diesem Punkt. Es sagt, dass ich RSAPublicKey hier nicht werfen kann: 'RSAPublicKey eServer = (RSAPublicKey) cert.getPublicKey();' – RockOn
was ist die genaue Fehlermeldung? Was hast du in deiner crypt.cer-Datei? –
- 1. Erstellen x.509-Zertifikat mit Bouncycastle mit Zertifikatspfad (Cert-Kette)
- 2. x 509 Stammzertifizierung Verifikation
- 3. X.509-Autorisierungszertifikat erstellen
- 4. Wie signiere ich eine HTTP-Anfrage mit einem X.509-Zertifikat in Java?
- 5. X.509-Clientprogramm (nicht selbstsigniert) programmgesteuert generieren
- 6. Primer für X.509-Zertifikate unter Windows
- 7. Ein X.509-Zertifikat mit Java lesen
- 8. Tool zum Anzeigen von X.509-Zertifikaten?
- 9. Wie erstelle ich eine Transaktionsnummer?
- 10. X.509-Zertifikat kann nicht gefunden werden mit "FindBySubjectName"
- 11. Wie programmgesteuert ein X.509-Zertifikat in .NET erstellen?
- 12. So validieren X.509-Zertifikat in C# mit Compact Framework
- 13. Wie erstelle ich eine Mehrfachfrage?
- 14. Wie erstelle ich eine MKMapView?
- 15. Wie erstelle ich eine Gemfile?
- 16. Onelogin PHP SAML toolkit und cert fingerprint
- 17. Matlab: Wie erstelle ich eine Projektion
- 18. Wie lösche ich einen Cert-Mapping-Eintrag?
- 19. Wie erstelle ich eine Liste von DataFrame?
- 20. Wie erstelle ich eine TIFF-Datei?
- 21. java.lang.Exception: Input kein X.509-Zertifikat: keytool Fehler
- 22. Interkonvertierbarkeit von asymmetrischen Schlüsselcontainern (z. B. X.509, PGP, OpenSSH)
- 23. "Das X.509-Zertifikat CN = servicebus.windows.net" Azure Service Bus-Warteschlange
- 24. Fehler beim Importieren des SSL-Zertifikats: Kein X.509-Zertifikat
- 25. Wie erstelle ich eine Riak Suchabfrage?
- 26. Exportieren von X.509-Zertifikat OHNE privaten Schlüssel
- 27. Kann nicht X.509-Zertifikat FindByThumbprint mit finden
- 28. Wie extrahiere ich X.509-Zertifikat (DER-Encoded) aus einer bestimmten Datei mit C++?
- 29. keytool Fehler: java.lang.Exception: Eingabe kein X.509-Zertifikat
- 30. Weblogic Server für X.509 Smartcard-Authentifizierung konfigurieren
Ich habe keine Ahnung, was Ihr Bedarf für Zertifikate ist, aber der Fehler, den Sie bekommen, passiert einfach, weil die JVM die Datei nicht finden kann. Zu den Lösungen gehört das Angeben des Pfads relativ zum Klassenpfad oder das Angeben des vollständigen Dateisystempfads für die Datei. –
Hm okay. Ich bin mir nicht sicher, ob dieses Programm die Speicherdatei für mich erzeugen soll oder ob ich irgendwie eine Speicherdatei erstellen muss. Ich bin neu in dem Thema, also bin ich ein wenig verloren. – RockOn