以前は、アプリケーションは.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'は内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
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コマンドはそのまま機能するはずです(それについてはよくわかりません)