gpt4 book ai didi

java - 在 Linux 浏览器(或 Linux 命令行)中为 Java 证书信任库导出 SSL 证书

转载 作者:太空宇宙 更新时间:2023-11-03 14:17:39 25 4
gpt4 key购买 nike

背景:

我在使用 ColdFusion 9 的 Web 服务时遇到了一些问题(对等端未经过身份验证)。

首先,我要尝试 importing the cert into ColdFusion's underlying Java keystore .如果这不起作用,我将尝试 fiddle with ColdFusion's security provider .

但我的问题更具体...

问题:

如何在 Chrome(或 Linux CLI)中导出证书(在正确的级别),以及采用哪种格式?

详情

我看过一些从浏览器导出证书的说明,但它们适用于 IE(旧版本),我更愿意使用 Chrome,因为我在 Linux 上。

为了获得下面的屏幕截图,我:

  • 点击 URL 旁边的锁形图标
  • “连接”选项卡(显示“此网站的身份已由 Thawte SSL CA 验证”)
  • 点击“证书信息链接”
  • “详细信息”选项卡

Screen Shot of Chrome's Certificate Export Dialog

从那里,我可以在四个级别之一导出:

  • 内置对象 token :Thawte Premium Server CA
  • 解冻主根 CA
  • Thawte SSL CA
  • sb1.geolearning.com

哪个合适?

此外,Adobe's documentation说“证书必须是可分辨编码规则 (DER) 格式的 X.509 证书。”,并且 Chrome 的导出对话框提供以下选项:

  • Base64 编码的 ASCII,单一证书
  • Base64 编码的 ASCII,证书链
  • DER 编码的二进制文件,单一证书
  • PKCS #7,单一证书
  • PKCS #7,证书链
  • 所有文件

我认为“DER 编码的二进制文件,单一证书”是合适的吗?

最佳答案

使用浏览器

以下生成了我能够使用 keytool 导入的证书:

  • 级别:sb1.geolearning.com
  • 文件类型:DER 编码的二进制文件,单一证书

为了后代,这里是用于导入的命令:

sudo keytool -import -keystore /opt/jrun4/jre/lib/security/cacerts -alias "sb1.geolearning.com (Thawte SSL CA)" -storepass changeit -noprompt -trustcacerts -file ~/Downloads/sb1.geolearning.com

没有浏览器

这就是我最近在做的事情(在 Vagrant provisioner 中)。在此脚本中, keystore 是硬编码的,因为目前我只将它用于 Lucee;然而, keystore 的路径可以很容易地被参数化。此外,runfile 相关代码只是为了让 Vagrant 不会多次运行脚本;如果您不将代码用作 Vagrant 配置器,那么这些行是多余的。

与上述解决方案真正不同的是,它通过 openssl s_client 获取证书(并使用 sed 清理它)而不是手动执行,通过浏览器。

#!/usr/bin/env bash
set -e

description="Add cert to Lucee's keystore."

while :
do
case $1 in
--provisioned-dir=*)
provisioned_dir=${1#*=} # Delete everything up till "="
shift
;;
--runfile-name=*)
runfile_name=${1#*=} # Delete everything up till "="
shift
;;
--site-host-name=*)
site_host_name=${1#*=} # Delete everything up till "="
shift
;;
-*)
echo "WARN: Unknown option (ignored): $1" >&2
shift
;;
*) # no more options. Stop while loop
break
;;
esac
done

runfile="${provisioned_dir}/${runfile_name}"

if [ -f "${runfile}" ]; then
echo "${description}: Already run."
exit 0
fi

echo "add cert to keystore"

echo -n | \
openssl s_client -connect ${site_host_name}:443 \
| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
> /tmp/${site_host_name}.cert

/opt/lucee/jdk/jre/bin/keytool \
-import \
-keystore /opt/lucee/lib/lucee-server/context/security/cacerts \
-alias "${site_host_name} (self-signed)" \
-storepass changeit \
-file /tmp/${site_host_name}.cert \
-noprompt \
|| true

touch "${runfile}"

关于java - 在 Linux 浏览器(或 Linux 命令行)中为 Java 证书信任库导出 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15645256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com