Назад | Перейти на главную страницу

как установить ssl на tomcat 7?

Я знаю, что этот вопрос может показаться слишком простым, и мне следовало прочитать все документы, доступные в Интернете, правда в том, что я это сделал, и мне не повезло, это немного сбивает меня с толку, я много раз устанавливал эту вещь, но для Apache никогда для Tomcat.

Я хочу установить сертификат от GoDaddy, поэтому я выполнил эту инструкцию

http://support.godaddy.com/help/article/5239/generating-a-csr-and-installing-an-ssl-certificate-in-tomcat-4x5x6x

Я создал свой ключевой файл вот так

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

Спасибо.

Попробую немного пояснить процедуру подписания:

  • Генерация ключей: вы создаете закрытый ключ
  • Генерация CSR: с помощью вашего закрытого ключа вы создаете запрос к органу сертификации, который содержит сертификат для подписи
  • Подпись CA: CA подписывает ваш сертификат и отправляет его вам (теперь он находится внутри вашего отпечатка пальца и один).
  • cert import: импортировать подписанный сертификат в хранилище ключей, тем самым делая его доступным для tomcat
  • chain-cert import: импортировать сертификаты, которые определяют доверительную цепочку

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>

RAW-содержимое скрипта

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