web-dev-qa-db-ja.com

dotnetcoredockerコンテナに証明書をインストールします

以前は、アプリケーションは.net Frameworkで実行され、PowerShellを使用して、次のコマンドを実行して証明書を証明書ストアにインストールしていました。

RUN powershell -NoProfile -Command \ $Secure_String_Pwd = ConvertTo-SecureString "ourverysecretpassword" -AsPlainText -Force ; \ Import-PfxCertificate -FilePath /cert.pfx -CertStoreLocation Cert:\LocalMachine\Root -Exportable -Password $Secure_String_Pwd

しかし、コードを.netcoreに転送したので、上記のコマンドはdockerfileでは機能しなくなりました。

Dockerfileを介して既存の.pfx証明書をdockerコンテナーにインストールする方法について何かアイデアはありますか?

[編集] Windowsでコンテナを実行しようとしています。これが完全なdockerfileです。おそらく、間違ったイメージを使用しているだけです。

これはDockerファイル全体です。

FROM Microsoft/dotnet

COPY ./Web /app/

COPY cert.pfx /cert.pfx

RUN powershell -NoProfile -Command \
 $Secure_String_Pwd = ConvertTo-SecureString "againourverysecretpassword" -
AsPlainText -Force ; \
 Import-PfxCertificate -FilePath /cert.pfx  -CertStoreLocation 
 Cert:\LocalMachine\Root -Exportable -Password $Secure_String_Pwd

WORKDIR /app

EXPOSE 5000 
ENTRYPOINT ["dotnet", "myhost.dll"]

とにかく、それは実行powershellコマンドで失敗します: 'powershell'は内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。

6
M. Berkhof

DockerコンテナはLinuxで実行されていますか?

そうだと思います。次に、ベースイメージはMicrosoft/aspnetcore、これはUbuntuに基づいています。

これをDOCKERFILEに追加する必要があります。

COPY ca_bundle.crt /usr/local/share/ca-certificates/your_ca.crt
RUN update-ca-certificates

1行目はCAバンドルをイメージにコピーし、2行目はCAリストを更新します。

CAバンドル(証明書に署名した機関のリスト)は、GoogleだけでPFXから抽出できます。 This は私が最初に見つけたリンクです。

コンテナーがWindowsで実行されている場合、Powershellコマンドはそのまま機能するはずです(それについてはよくわかりません)

10
Mario Cianciolo