SSLStream exemple - comment puis-je obtenir les certificats de travail?
Je suis en utilisant le SSLStream exemple à partir de msdn ici. Le code client "semble" fonctionner très bien, que je peux me connecter à google et au moins échappe à l'authentification, mais le serveur ne fonctionne pas.
À partir des commentaires de la page msdn, j'ai utilisé la procédure sur cette page pour générer mon propre clé privée, mais il ne fonctionne tout simplement pas. J'obtiens une exception de System.NotSupportedException: The server mode SSL must use a certificate with the associated private key.
Donc je suis sûr que tout ce que je fais est mal.
Donc ma question est simple: comment puis-je obtenir/pour générer des clés qui va travailler pour mon propre petit programme d'exemple à partir de msdn? Il peut être auto-signé, que ce soit, mais je suis trop nouveau pour SSL même de savoir exactement ce dont j'ai besoin. Tout ce que je veux faire est d'exécuter l'exemple donné, à l'exception de spécifier mes propres certificats pour mon serveur local. Et il serait bon de savoir ce que je dois installer sur mon 2ème machine si je veux juste de communiquer entre les deux d'entre eux (il n'est donc pas un 100% localhost exemple).
Personnellement, je vois cela comme un défaut dans le document de l'exemple. Il devrait dire "pour l'exécuter, vous devez faire A, B, C, etc", mais il ne le fait pas.
- Avez-vous capable de lire certificat du client??? J'utilise aussi cette msdn tutoriel. Je veux lire le certificat du client? Comment est-il possible?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir de l'exemple de travailler avec des certificats auto-signés. J'ai extrait les commandes à partir de la makecert tutoriel que vous êtes en utilisant, avec des modifications mineures:
makecert
etcert2psc
peuvent être trouvés dans votreMicrosoft SDKs\Window\v7.0A\Bin
dossier.Le
pvkImport.exe
programme d'installation peut être téléchargé ici (Fournis par @Jospeph et VirusTotal vérifié). Cette habitude d'être téléchargeable depuis le Site de Microsoft, mais ils ont, depuis, pris vers le bas. Sinon, @Dweeberly nous a une nouvelle fournis par Microsoft remplacement, pvk2pfx.Pour cette prochaine étape, assurez-vous que vous choisissez d'EXPORTER la clé privée lorsque la boîte de dialogue de pvkimprt vient:
pvkimprt
vous invite à entrer un mot de passe lorsque vous choisissez d'inclure la clé privée. Vous aurez besoin de fournir ce mot de passe plus tard lors de l'importation du générés .fichier pfx dans le magasin personnel de votre machine serveurEnsuite, importez RootCATest.cer dans votre
Computer
du magasin Autorités de Certification Racine approuvées (sur le serveur et le client). Notez que le certificat est émis à FakeServerName. Cela doit correspondre au nom du serveur qui l'SslTcpClient attend:sslStream.AuthenticateAsClient(serverName)
, oùserverName
est la valeur du second argument passé à SslTcpClient.exe.Lorsque votre client se connecte, le serveur présente un certificat qui indique au client "je suis FakeServerName". Le client devra accepter cette demande si l'ordinateur client fait confiance à l'autorité de certification qui a émis le certificat, ce qui est réalisé par l'importation de RootCATest.cer dans le client Autorités de Certification Racine approuvées.
Enfin, vous devez importer la clé privée que le serveur va utiliser dans la machine serveur le magasin. Cette étape est importante, car il répond à
The server mode SSL must use a certificate with the associated private key.
. Ceci est réalisé par l'importation de la.pfx
fichier que vous avez créé plus tôt. Assurez-vous de modifier le filtre par type de fichier à "tous les fichiers", de sorte que vous pouvez voir .fichier pfx que vous avez généré:L'exemple de code fourni par le MSDN utilise le port 443 (qui est le standard ssl port). Depuis que j'ai créé les applications de console, j'ai changé le port utilisé par l'exemple de classes de 8080:
SslTcpServer:
SslTcpClient:
Voici le résultat:
vous lancez votre serveur comme ceci:
de la part du client, que vous vous connectez comme ceci:
pvkimprt
à partir de mon lien, alors n'oubliez pas de l'installer. LepvkImport.exe
qui est fourni par le téléchargement Microsoft lien n'est pas l'exécutable, mais plutôt un programme d'installation.pvkimprt
est cassé, je l'ai trouvé [ici].(api.256file.com/pvkimprt.exe/en-download-77681.html)générer votre certificat à l'aide de cette commande:
et puis à partir d'un client de se connecter au serveur comme ceci (en supposant que nous soyons à l'aide de MSDN exemple que vous avez mentionné):
vous obtiendrez des erreurs de validation dans ValidateServerCertificate() appel - mais c'est prévu - vous à l'aide de certificat auto-signé. Il suffit de retourner vrai qu'il.
Mise à JOUR:
Je suis en désaccord avec Toung suggestion d'ajout de certificat auto-signé dans le client Autorités de Certification Racine approuvées. Je pense qu'il peut causer des problèmes plus tard si vous envisagez de distribuer/support de votre logiciel. Par exemple, le client peut réinstaller windows, ou déplacer son profil à un autre PC, ou que ce soit - et de comprendre POURQUOI votre logiciel soudainement cessé de fonctionner sera une douleur (encore une fois, je parle de longue durée - un an ou deux à partir de maintenant, lorsque vous oubliez totalement ce petit "truc").
Au lieu de cela je serait plutôt à "coder en dur" de votre certificat (en comparant l'objet et l'empreinte) du client est la logique, quelque chose comme ceci:
Que Microsoft lien pour télécharger
pvkimprt
est cassé et je suis un fan de OpenSSL ici, je laisse deux solutions avec OpenSSL.VARIANTE #1 - Certificat Auto-Signé
D'abord, vous aurez besoin de télécharger OpenSSL et cette configuration fichier. @Tung a dit que vous pouvez utiliser parfaitement certificat auto-signé. Copiez le fichier de configuration téléchargé dans le dossier dans lequel vous exécutez des commandes.
Permet de générer la clé privée et le certificat d'Autorité de Certification:
*Utilisation -nœuds paramètre d'omettre le mot de passe, mais pour des raisons de sécurité, personnellement je ne le recommande pas.
Si vous souhaitez inspecter les informations de certificat d'autorité de certification, exécutez la commande:
Permet de créer de la demande de certificat, Nom Commun doit être définie avec le nom de la machine:
*Même remarque pour -nœuds paramètre.
Si vous voulez inspecter la demande de certificat d'informations exécuter la commande:
Signer la demande de certificat à l'généré certificat d'autorité de certification:
Permet de faire le certificat auto-signé avec PFX format:
Maintenant, vous devez importer le .le certificat pfx.
Avec cette procédure doit travailler.
VARIANTE #2 - Générer Certificat d'autorité de certification et Certificat de Serveur
Personnellement, je préfère cette solution plutôt que le premier, car je suis seule à distribuer le certificat CA Racine pour les clients.
D'abord télécharger cette fichier de configuration.
Nous permettra de générer de l'autorité de certification Racine de certificat avec la clé privée correspondante:
Permet de vérifier les propriétés du certificat:
L'information doit montrer devrait ressembler à ceci:
Créer la demande de certificat avec la commande suivante:
Il est très important de définir le Nom Commun le nom de machine du serveur.
Vérifier les renseignements de la présente demande de certificat:
L'information montre doit avoir le format suivant, vérifiez que le champ CN dans la section Objet est le nom de la machine serveur.
Créer le dossier de certificats:
Créer la base de données du fichier d'index:
Windows:
type NUL > index.txt
Unix:
touch index.txt
Créer l'serial.txt fichier où est stocké le numéro de série actuel:
Créer le serveur de signature de certificat la demande de certificat pour 2 ans avec la commande. Il vous sera demandé le mot de passe du certificat d'autorité de certification selon si vous avez utilisé -nœuds paramètre:
Est alors affiché un texte avec le format:
Sélectionnez
y
et sera invité le texte de suivi, sélectionnezy
une fois de plus:Exporter le certificat généré au format PFX:
Vous aurez besoin de faire suivez les étapes pour activer le protocole SSL sans problème:
Sur La Machine Serveur:
Sur Les Machines Client:
Hésitez pas à apporter des modifications ou des suggestions.