如何在基于nanoserver-1709的图像上在docker容器上安装证书?

时间:2018-04-25 12:14:21

标签: asp.net docker docker-compose nano-server

我一直在寻找任何证书管理员的图片,但我找不到任何可以帮助我安装.cer证书的内容。 1709纳米服务器的图像并没有配备PowerShell,所以为了使用它,我必须使用microsoft / windowsservercore映像进行多阶段构建,但我不太确定我是怎么去的关于这样做,我似乎无法通过谷歌找到任何有用的东西。

如果有人知道如何安装证书或使用多阶段构建,非常感谢。

对于那些感兴趣的人,这里是我的docker-compose.yml和Dockerfile

搬运工-compose.yml

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="xmldsig-f62dafae-6983-4b97-9b52-3f24c6960c43">
    ....
    <ds:SignatureValue Id="xmldsig-f62dafae-6983-4b97-9b52-3f24c6960c43-sigvalue">
         VpJzFiW62NK2ytlUkAYF....
    </ds:SignatureValue>
    ....
</ds:Signature>

Dockerfile

version: '3'

services:
  myapp:
    image: myapp
    ports:
    - "5000:80"
    build:
      context: .
      dockerfile: MyApp\Dockerfile
    container_name: "myapp"
    hostname: "myapp"
    depends_on:
      - db
  db:
    image: "microsoft/mssql-server-windows-express"
    environment:
      SA_PASSWORD: ""
      ACCEPT_EULA: "Y"
    container_name: "myapp"
    hostname: "myapp"

谢谢!

1 个答案:

答案 0 :(得分:1)

在某些图像上,有一个名为certoc.exe的工具,可用于导入证书(用法:certoc.exe -addstore root my_root_certificate.cer)。 1709图像上没有此工具,但microsoft/nanoserver:sac2016等图像上却有此工具。

总结起来,我发现最好的解决方法是将Dockerfile更改为包含以下内容:

FROM microsoft/nanoserver:sac2016 as tool COPY --from=tool /Windows/System32/certoc.exe . USER ContainerAdministrator RUN certoc.exe -addstore root my_root_certificate.cer

此处提供完整示例:https://pvlerick.github.io/2018/11/how-to-run-an-https-asp.net-core-app-using-test-certificates-in-nanoserver-1709-1803-with-docker

在这里非常感谢Joshua Chini:https://joshuachini.com/2018/02/08/how-to-import-an-enterprise-certificate-into-a-windows-container/