2013-03-26 4 views
0

Contexte:Exportation du certificat SSL sous Linux navigateur (ou Linux ligne de commande) pour Java certificat Truststore

J'ai quelques problèmes consommer un service Web avec ColdFusion 9 (PEER non authentifié). D'abord, je vais essayer importing the cert into ColdFusion's underlying Java keystore. Si cela ne fonctionne pas, je vais essayer de fiddle with ColdFusion's security provider.

Mais mes questions sont plus spécifiques ...

Question:

Comment exporter le cert (au bon niveau) dans Chrome (ou Linux CLI), et dans quel format?

Détails

J'ai vu quelques instructions pour l'exportation d'un cert à partir d'un navigateur, mais ils ont été pour IE (anciennes versions, à ce), et je préférerais utiliser Chrome, parce que je suis sur Linux.

Pour arriver à la capture d'écran ci-dessous I:

  • Cliquez sur l'icône de verrouillage à côté de l'URL
  • « Connexion » onglet (affiche « L'identité de ce site a été vérifié par SSL CA thawte ")
  • Cliquez sur "onglet Informations sur le certificat Link"
  • "Détails"

Screen Shot of Chrome's Certificate Export Dialog

À partir de là, je suis en mesure d'exporter à l'un des quatre niveaux:

  • Token Builtin Objet: Thawte serveur Premium CA
  • thawte Primary Root CA
  • Thawte SSL CA
  • SB1. geolearning.com

Lequel est approprié?

En outre, Adobe's documentation indique «Le certificat doit être un certificat X.509 au format DER (Distinguished Encoding Rules).» Et la boîte de dialogue d'exportation de Chrome offre les options suivantes:

  • base64 codé ASCII, seul certificat
  • ASCII codés base64, chaîne de certificats
  • DER codé Certificat unique binaire
  • PKCS # 7, seul certificat
  • PKCS # 7, chaîne de certificats
  • Tous les fichiers

Je suppose que "binaire codé DER, certificat unique" est approprié?

Répondre

1

Avec un navigateur

Voici généré un certificat que j'ai pu importer à l'aide keytool:

  • Niveau: sb1.geolearning.com
  • Type de fichier: binaire codé DER, simple certificat

pour la postérité, voici était la commande utilisée pour l'importation:

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 

Sans un navigateur

Voici ce que je fais ces jours-ci (dans un approvisionneur Vagrant). Dans ce script, le keystore est codé en dur, car je ne l'utilise que pour Lucee, pour l'instant; cependant, le chemin du fichier de clés peut facilement être paramétré. En outre, le code associé runfile est juste que Vagrant n'exécute pas le script plus d'une fois; ces lignes sont superflues si vous n'utilisez pas le code en tant que fournisseur vagabond. La seule chose qui différencie vraiment cette solution de la solution ci-dessus est qu'elle obtient le certificat via openssl s_client (et le nettoie avec sed) au lieu de le faire manuellement, via un navigateur.

#!/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}"