0

バックグラウンド:

ColdFusion 9でWebサービスを使用するのに問題があります(ピアが認証されていません)。

まず、ColdFusionの基盤となるJavaキーストアに証明書をインポートしてみます。それでも問題が解決しない場合は、ColdFusionのセキュリティプロバイダーをいじってみます。

しかし、私の質問はもっと具体的です...

質問:

Chrome(またはLinux CLI)で(適切なレベルで)証明書をエクスポートするにはどうすればよいですか?また、どの形式でエクスポートしますか?

詳細

ブラウザから証明書をエクスポートするためのいくつかの手順を見てきましたが、それらはIE(古いバージョン)用であり、Linuxを使用しているのでChromeを使用したいと思います。

以下のスクリーンショットを取得するために、私は:

  • URLの横にある鍵のアイコンをクリックします
  • [接続]タブ(「このWebサイトのIDはThawte SSL CAによって確認されました」と表示されます)
  • 「証明書情報リンク」をクリックします
  • [詳細]タブ

Chromeの証明書エクスポートダイアログのスクリーンショット

そこから、次の4つのレベルのいずれかでエクスポートできます。

  • ビルトインオブジェクトトークン:ThawtePremium Server CA
  • プライマリルートCAを解凍します
  • Thawte SSL CA
  • sb1.geolearning.com

どちらが適切ですか?

また、Adobeのドキュメントには、「証明書は識別符号化規則(DER)形式のX.509証明書である必要があります」と記載されており、Chromeのエクスポートダイアログには次のオプションがあります。

  • Base64でエンコードされたASCII、単一の証明書
  • Base64でエンコードされたASCII、証明書チェーン
  • DERでエンコードされたバイナリ、単一の証明書
  • PKCS#7、単一の証明書
  • PKCS#7、証明書チェーン
  • すべてのファイル

「DERエンコードされたバイナリ、単一の証明書」が適切だと思いますか?

4

1 に答える 1

1

ブラウザ付き

以下は、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プロビジョナーで)。このスクリプトでは、キーストアはハードコーディングされています。これは、現時点ではLuceeにのみ使用しているためです。ただし、キーストアのパスは簡単にパラメータ化できます。また、runfile関連するコードは、Vagrantがスクリプトを2回以上実行しないようにするためのものです。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}"
于 2013-03-26T22:11:16.703 に答える