Dockerfile keytool:即使使用“ keytool-delete”,也获得“证书别名 已经存在”

问题描述 投票:1回答:1

我使用Dockerfile为需要HTTPS的Web应用创建图像。但是,我收到了Certificate not imported, alias <my-cert-name> already exists Java异常。当我尝试不使用Dockerfile时,仅从命令行即可删除现有别名,并且exportimport有效。但不能使用Dockerfile。有任何想法吗?谢谢!

Dockerfile:

  FROM openjdk:8-alpine

  #Starting https and certs configuration
  #Make directory for certs inside the container
  RUN mkdir -p usr/app/ssl/certs/

  #Copy certs from local to the container
  COPY myWebApp/src/main/resources/PT/certificates/my-cert-name.jks usr/app/ssl/certs/
  COPY myWebApp/src/main/resources/PT/certificates/trustStore.jks usr/app/ssl/certs/

  #Export/Import certificate 
  RUN cd usr/app/ssl/certs/ && keytool -delete -alias my-cert-name -keystore my-cert-name.jks -storepass password123! && keytool -export -alias my-cert-name -keystore my-cert-namet.jks -file my-cert-name.crt -storepass password123! && keytool -importcert -keystore trustStore.jks -alias my-cert-name -storepass password123! -file my-cert-name.crt -noprompt
  #Ending https and certs configuration

  RUN mkdir -p /usr/app/myweb

  COPY myWebApp/target/myWeb.war /usr/app/myweb

  CMD java -Xms512M -Xmx6144M -XX:MaxMetaspaceSize=3072M -jar /usr/app/myweb/myWeb.war
  EXPOSE 8080

Docker构建命令

  >docker build -it test-https-image .

Env:

 Using Docker desktop on windows 10. 

谢谢!

docker https keytool
1个回答
0
投票

我更喜欢表示法:

RUN cd usr/app/ssl/certs/ && \
    keytool -delete -alias my-cert-name -keystore my-cert-name.jks -storepass password123! && \
    keytool -export -alias my-cert-name -keystore my-cert-namet.jks \
      -file my-cert-name.crt -storepass password123! && \
    keytool -importcert -keystore trustStore.jks -alias my-cert-name -storepass password123! \
      -file my-cert-name.crt -noprompt

再次检查您要导入已删除的相同名称更容易。

如果该证书已在复制的密钥库中已经,则我不会导出/重新导入它。 (我仅将其导入my previous answer

确保“ usr/app/ssl/certs”是正确的路径:我宁愿使用绝对路径,而不是相对路径。

© www.soinside.com 2019 - 2024. All rights reserved.