Der RSA-Schlüsselcontainer konnte nicht geöffnet werden. Windows Server 2008 R2


7

Ich richte eine zweite asp.net-Site auf unserem Windows 2008 R2-Server ein. Wir verwenden einen RSA-Schlüsselcontainer, um unsere Verbindungszeichenfolgen zu verschlüsseln. Ich habe einen neuen Anwendungspool mit denselben Einstellungen wie unser Standardanwendungspool erstellt, der unsere aktuelle Site unterstützt, einschließlich der Verwendung desselben Benutzerkontos für die Identität. Wenn ich versuche, auf die neue Site zuzugreifen, wird folgende Fehlermeldung angezeigt: Der RSA-Schlüsselcontainer konnte nicht geöffnet werden

Wenn ich die neue Website so ändere, dass sie unseren Standardanwendungspool verwendet, funktioniert dies. Daher versuche ich, dem Benutzerkonto im neuen Anwendungspool mithilfe des folgenden Befehls in einer Administrator-Eingabeaufforderung Zugriff auf den RSA-Schlüsselcontainer zu gewähren:

aspnet_regiis -pa "KeyContainerName" "dmz \ UserName"

Ich erhalte die folgende Fehlermeldung: Der RSA-Schlüsselcontainer wurde nicht gefunden.

Ich führe den folgenden Befehl aus, um den Schlüsselcontainer zu installieren:

aspnet_regiis -pi "KeyContainerName" "c: \ keys.xml"

Ich erhalte die folgende Fehlermeldung: Objekt existiert bereits

Ich versuche, den folgenden Befehl auszuführen, um den Schlüsselcontainer zu löschen:

aspnet_regiis -pz "KeyContainerName"

Ich erhalte die folgende Fehlermeldung: Der RSA-Schlüsselcontainer wurde nicht gefunden. Gescheitert!

Ich bin völlig verblüfft. Ein Befehl sagt mir, dass es bereits existiert. Dies ist sinnvoll, da ich weiß, dass unsere eine Website es verwendet. Als ich jedoch versuchte, es zu löschen, wurde mir mitgeteilt, dass es nicht existiert. Es funktioniert für einen App-Pool, aber nicht für einen neuen App-Pool mit genau derselben Identität? Ich habe genau das gleiche Setup auf 12 anderen Servern durchgeführt und alle haben gut funktioniert.

Antworten:


3

Ich habe etwas ähnliches gehabt.

Wenn das von Ihnen verwendete Konto keine Berechtigung für den Schlüsselcontainer hat, wird beim Versuch, ihm die Berechtigung zu erteilen ( aspnet_regiis -pa "KeyContainerName" "dmz\UserName"), der Fehler "Schlüsselcontainer nicht gefunden" angezeigt. Der Schlüssel existiert jedoch; Daher der Fehler, wenn Sie versuchen, ihn neu zu erstellen.

Dies würde bedeuten, dass der Schlüssel von einem anderen Konto erstellt wurde.

Wenn Sie sich als dieses Konto anmelden können, können Sie dies tun

aspnet_regiis -pa "KeyContainerName" "dmz\YourUserName" -full

um Ihrem eigenen Konto die Kontrolle über den Schlüssel zu gewähren. Ich würde vorschlagen, eine KeyAdministrators NT-Gruppe einzurichten, Zugriff darauf zu gewähren und sich selbst in die Gruppe aufzunehmen.


Wenn Sie keinen Zugriff auf das alte Konto haben, gehen Sie zu C: \ Dokumente und Einstellungen \ Alle Benutzer \ Anwendungsdaten \ Microsoft \ Crypto \ RSA \ MachineKeys und öffnen Sie dort im Editor alle Schlüssel => den, den Sie können. ' t open ist wahrscheinlich problematisch + der Name des Schlüssels ist dort im Klartext => Administratorgruppen Zugriff auf diesen Schlüssel über Dateieigenschaften gewähren => aspnet_regiis -pa "KeyContainerName" "Administrators" -voll ausführen, damit zukünftige Benutzer dies nicht tun habe Probleme mit diesem Schlüssel
Avi Pinto

2

"Ich habe das gleiche auf 12 anderen Servern gemacht und es hat gut funktioniert."

Gut:

Stellen Sie den Server neu dar oder starten Sie ihn erneut. Etwas an diesem ist schon in diesem frühen Stadium deutlich anders.

Wenn Sie auf jedem Server genau dasselbe tun (übrigens, warum wird es nicht mit Skripten versehen?) Und sich alle identisch verhalten und alle identisch konfiguriert wurden, aber dies ist irgendwie anders , werden die Dinge von hier aus nur noch schlimmer.


Gibt es eine Möglichkeit, die RSA-Zertifikate tatsächlich anzuzeigen, um herauszufinden, warum sie vorhanden, aber nicht zugänglich sind?
Patridge

Beginnen Sie mit ProcMon oder ProcExp von live.sysinternals.com . Wenn Sie jedoch erwarten, von einer gemeinsamen Plattform aus zu starten, und dies nicht der Fall ist, könnte dies die Spitze des Eisbergs sein. Oder es könnte die einzige kaputte Sache sein - der Punkt ist, dass Sie einen inkonsistenten Build haben, und dieser muss behoben werden, bevor andere Annahmen sicher getroffen werden können.
TristanK

1

Überprüfen oder versuchen Sie, den vollständigen Pfad zu aspnet_regiis.exe zu verwenden. Wie Sie vielleicht wissen, kann dies entweder eine 32-Bit- oder eine 64-Bit-Version sein. Z.B:

%SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pa "KeyContainerName" "domain\user"  
%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -pa "KeyContainerName" "domain\user"  

%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis -pa "KeyContainerName" "domain\user"  
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pa "KeyContainerName" "domain\user"  

%SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"  
%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"  

%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"  
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"  

Als ich das regiis tatsächlich ausführte, lief ich vom 32-Bit-Framework für 2.0 aus, was ich auf allen anderen Servern getan habe und es funktionierte für sie. Ich habe es von den anderen Framework-Pfaden aus versucht und immer noch nicht los.
Blegger

1

Wir hatten das gleiche Problem auf einem geklonten Server , konnten jedoch Pauls Lösung nicht zum Laufen bringen. Stattdessen haben wir unseren Computer nach der Datei machineKeys durchsucht und diese aus dem Ordner ... \ Crypto \ RSA \ gelöscht.

Danach konnten wir den RSA-Schlüsselcontainer neu erstellen. Dadurch wurde die von uns gelöschte machineKeys-Datei neu erstellt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.