web-dev-qa-db-fra.com

Où le noyau .net recherche-t-il les certificats sur la plate-forme Linux

Sous Windows, pour les classes .NET Framework, nous pouvons spécifier sslkeyrepository comme * SYSTEM/* USER.On linux où les classes .NET Core recherchent-elles le certificates par défaut et quelles pourraient être les valeurs de sslkeyrepository.

13
subbaraoc

.Net Core utilise OpenSSL sous Linux, par conséquent, vous devez configurer votre Linux environment dans le conteneur pour que OpenSSL récupère le certificat.

Vous pouvez le faire de deux manières:

  1. Copie du certificat .crt fichier vers un emplacement qui update-ca-certificates recherchera les certificats de confiance - par exemple /usr/local/share/ca-certificates/ oron RHEL /etc/pki/ca-trust/source/anchors/:

    COPY myca.crt /usr/local/share/ca-certificates/
    
  2. Appel de update-ca-certificates:

    RUN update-ca-certificates
    
3
Barr J

Pour Linux et Mac .NET CORE utilisera OpenSSL.

commande pour générer une clé privée et une demande de signature de certificat:

openssl req -config https.config -new -out csr.pem

commande pour créer un certificat auto-signé:

openssl x509 -req -days 365 -extfile https.config -extensions v3_req -in csr.pem -signkey key.pem -out https.crt

commande pour générer un fichier pfx contenant le certificat et la clé privée que vous pouvez utiliser avec Kestrel:

openssl pkcs12 -export -out https.pfx -inkey key.pem -in https.crt -password pass:<password>

Après ça Trust the certificate

Cette étape est facultative, mais sans elle, le navigateur vous avertira que votre site est potentiellement dangereux. Vous verrez quelque chose comme ce qui suit si votre navigateur n'est pas trust your certificate:

Il n'existe aucun moyen centralisé de faire confiance au certificat sous Linux, vous pouvez donc effectuer l'une des opérations suivantes:

  1. Exclure l'URL que vous utilisez dans la liste d'exclusion de votre navigateur

  2. Faire confiance à tous les certificats auto-signés sur localhost

  3. Ajoutez le https.crt à la liste des certificats approuvés dans votre navigateur.

La manière exacte d'y parvenir dépend de votre navigateur/distribution.

Vous pouvez également référencer l'intégralité de exemple d'application Kestrel HTTPS

ou suivez ce blog Configuration de HTTPS dans ASP.NET Core sur différentes plates-formes

5
ArunPratap

Cette page fournit un bon résumé (et officiel) des emplacements X509Store Sur Linux (et toutes les plates-formes) pour .NET Core .

La réponse courte est que sous Linux, le magasin LocalMachine/Root Peut être ouvert en mode lecture seule, et les certificats renvoyés de ce magasin proviennent des répertoires de certificats globaux du système Linux standard. La réponse de @ barr-j fournit des informations sur la façon de copier des certificats dans des répertoires système à l'aide de commandes Linux. Cependant, l'utilisation normale de ces certificats globaux est de spécifier des autorités de certification approuvées, PAS comme un endroit sécurisé pour stocker un certificat https (qui contient une clé privée, qui ne devrait pas être accessible à tous les utilisateurs sur l'hôte).

Sous Linux avec .NET, vous ne pouvez pas écrire directement dans LocalMachine/Root X509Store Et LocalMachine/My N'est pas pris en charge.

Si vous souhaitez que votre accès au certificat soit limité à un utilisateur spécifique (une bonne idée pour les certificats https), sous Linux avec .NET, vous pouvez écrire et lire à partir d'un magasin de certificats local utilisateur à l'aide de new X509Store(StoreName.My, StoreLocation.CurrentUser).

0
crimbo