Bonjour,

Je suis entrain de coder un petit serveur SSL qui ressemble un peu à openssh. Le certificat doit être dynamiquement généré au premier lancement. Lorsqu'un client se connecte au serveur, le serveur doit pouvoir tester l'appartenance du certificat à un cache (openssh le fait avec le fichier authorized_keys) et inversement. D'après ce que j'ai pu trouver dans la MSDN, je suis arrivé au code suivant qui semble fonctionner:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
TcpListener serverSock = new TcpListener(listenEP);
try
{
    serverSock.Start();
    while (true)
    {
         Stream networkStream = null;
         TcpClient tcpClient = null;
         try
         {
             tcpClient = serverSock.AcceptTcpClient();
             networkStream = new SslStream
                          (
                            tcpClient.GetStream(), 
                            false,
                            new RemoteCertificateValidationCallback(validateClientCertificate)
                          );
             ((SslStream)networkStream).AuthenticateAsServer(
                               serverCertificate, 
                               false, 
                               SslProtocols.Tls, 
                               false);
 
             // reading data
             Byte[] bytes = new Byte[4096];
             int receivedBytes = networkStream.Read(bytes, 0, bytes.Length);
             ...
La difficulté qu'il reste à résoudre, c'est la génération du certificat.

La méthode AuthenticateAsServer prend en entrée un certificat de type X509Certificate. Aux vues de ce que j'ai trouvé dans la doc, le certificat utilisé par le constructeur de X509Certificate doit être au format pkcs#12 (fichier pfx). Je cherche donc un moyen de créer un tel fichier.

J'ai vu l'outil makecert fourni par microsoft, mais ça m'ennuie de le déployer sur toutes les machines.
J'essaye depuis pas mal de temps avec BouncyCastle, j'arrive à généré le certif + une clé privée, mais pas à l'exporter au format pkcs#12
Peut-être devrais-je utiliser les libs openssl...

Est-ce que quelqu'un a une idée ou un bout de code qui pourrait m'aider à avancer???

Merci de votre aide!!!