Я знаю, что этот вопрос может показаться слишком простым, и мне следовало прочитать все документы, доступные в Интернете, правда в том, что я это сделал, и мне не повезло, это немного сбивает меня с толку, я много раз устанавливал эту вещь, но для Apache никогда для Tomcat.
Я хочу установить сертификат от GoDaddy, поэтому я выполнил эту инструкцию
Я создал свой ключевой файл вот так
keytool -keysize 2048 -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore
keytool -certreq -keyalg RSA -alias tomcat -file csr.csr -keystore tomcat.keystore
Я изменил tomcat на mydomain.com .. это неправильно?
Я создал хранилище ключей, позже csr, после этого возникает проблема, я добавляю в server.xml в папку конфигурации
<Connector port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="path to your keystore file" keystorePass="changeit" clientAuth="false" sslProtocol="TLS"/>
Позже я импортировал сертификаты
keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file valicert_class2_root.crt
и я это сделал, но у меня нет gd_intermediate.crt, и последний шаг -
keytool -import -alias tomcat -keystore tomcat.keystore -trustcacerts -file <name of your certificate>
читая в других блогах, я видел, что они импортируют сюда crt, но tomcat - это пользователь, которого я должен оставить? или его например только ??
В документах tomcat я нашел это (http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html)
Загрузите сертификат цепочки из центра сертификации, который вы получили сертификат keytool -import -alias root -keystore \ -trustcacerts -file
And finally import your new Certificate keytool -import -alias tomcat -keystore <your_keystore_filename> \ -file <your_certificate_filename>
но я понятия не имею, что такое "цепной сертификат" ... может кто-нибудь мне помочь? Я действительно сбита с толку и заблудилась. Я использую Tomcat7
Спасибо.
Попробую немного пояснить процедуру подписания:
CA может делегировать подписку, поэтому, чтобы быть уверенным, что подписанный сертификат действителен, клиенты должны иметь возможность проверять все удостоверения CA. (т.е. ваш сертификат подписан ca.contoso, а contoso использует verisign в качестве центра сертификации; клиент проверит затем contoso, а затем подтвердит один, если все в порядке, ваш сертификат считается действительным)
Я часами пытаюсь понять это, и вот плоды моего труда
Вы не можете создать действительное хранилище ключей Tomcat с помощью crt и файла ключей GoDaddy
Результат Curl может выглядеть так:
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
curl -O https://raw.github.com/ssstonebraker/braker-scripts/master/working-scripts/crt_to_keystore.sh
chmod +x crt_to_keystore.sh
./crt_to_keystore.sh <path_to_crt> <path_to_key>
#!/bin/bash
# Filename: crt_to_keystore.sh
# Description: create tomcat keystore from cert and key
# Usage: "Usage: ./crt_to_keystore.sh <path_to_crt> <path_to_key>"
# Author: Steve Stonebraker
# pretty printing functions
function print_status { echo -e "\x1B[01;34m[*]\x1B[0m $1"; }
function print_good { echo -e "\x1B[01;32m[*]\x1B[0m $1"; }
function print_error { echo -e "\x1B[01;31m[*]\x1B[0m $1"; }
function print_notification { echo -e "\x1B[01;33m[*]\x1B[0m $1"; }
function printline { hr=-------------------------------------------------------------------------------------------------------------------------------
printf '%s\n' "${hr:0:${COLUMNS:-$(tput cols)}}"
}
####################################
# print message and exit program
function die { print_error "$1" >&2;exit 1; }
####################################
# function that is called when the script exits
function finish {
[ -f $(dirname $0)/temp.p12 ] && shred -u $(dirname $0)/temp.p12;
}
#whenver the script exits call the function "finish"
trap finish EXIT
#######################################
# if file exists remove it
function move_file_if_exist {
[ -e $1 ] && mv $1 $1.old && print_status "moved file $1 to $1.old";
}
#######################################
# Verify user provided valid file
function file_must_exist {
[ ! -f $1 ] && die "$1 is not a valid file, please provide a valid file name! Exiting....";
print_status "$1 is a valid file"
}
#######################################
# Verify user provided two arguments
# Verify user provided two arguments
[ $# -ne 2 ] && die "Usage: ./crt_to_keystore.sh <path_to_crt> <path_to_key>";
# Assign user's provided input to variables
crt=$1
key=$2
#read -p "Provide password to export .crt and .key: " key_pw
read -p "Provide password for new keystore: " pw
# Define some Variables
readonly ourPath="$(dirname $0)"
readonly gdbundle="$ourPath/gd_bundle.crt"
readonly keystore="$ourPath/tomcat.keystore"
readonly p12="$ourPath/temp.p12"
readonly KEYTOOL=$(which keytool)
readonly OPENSSL=$(which openssl)
#######################################
# Functions used by main execution
function gd_check_cert {
# Verify gd_bundle.crt exists
[ ! -f "$1" ] && print_error "$1 not found! Downloading..." && wget https://certs.godaddy.com/repository/$1;
[ ! -f "$1" ] && die "$1 must exist in current path! Exiting....";
[ -f "$1" ] && print_status "found $1 in current path"
}
function verify_before_execution {
printline
#verify godaddy cert
gd_check_cert $gdbundle
#Check to make sure the user provided valid files
file_must_exist ${crt}
file_must_exist ${key}
move_file_if_exist ${keystore}
}
function import_godaddy_root {
print_status "Importing gd_bundle.crt to java key store..."
${KEYTOOL} -import \
-alias root \
-keystore ${keystore} \
-trustcacerts \
-file ${gdbundle} \
-keypass ${pw} \
-storepass ${pw} >/dev/null 2>/dev/null
[ ! $? -eq 0 ] && die "Error running command... Exiting!";
}
function export_to_p12 {
printline
print_status "Exporting your key and cert to pkcs12 format..."
${OPENSSL} pkcs12 -export -chain -CAfile gd_bundle.crt -inkey ${key} -in ${crt} -out ${p12} -password pass:${pw}
[ ! $? -eq 0 ] && die "Error running command... Exiting!";
}
function import_p12_file {
print_status "Importing p12 file to java key store..."
${KEYTOOL} -importkeystore \
-srcalias 1 \
-destalias tomcat \
-srckeystore ${p12} \
-srcstoretype PKCS12 \
-srcstorepass ${pw} \
-destkeystore ${keystore} \
-keypass ${pw} \
-storepass ${pw} \
-dest‐storepass ${pw} >/dev/null 2>/dev/null
[ ! $? -eq 0 ] && die "Error running command... Exiting!";
}
function print_msg_after_creation {
printline
print_good "Keystore ${keystore} creation complete!"
printline
print_status "Don't forget to copy ${keystore} to /etc/tomcat7/tomcat.keystore and update server.xml"
printline
}
#######################################
# Main Execution
verify_before_execution
export_to_p12
import_godaddy_root
import_p12_file
print_msg_after_creation
Источник: http://brakertech.com/convert-valid-godaddy-cert-key-to-java-keystore/