Сервер/Клиент Tomcat Самоподписанный сертификат SSL

Мы можем использовать простую облегченную библиотеку строковых операций String.Format для Typescript.

String.Format ():

var id = image.GetId()
String.Format("image_{0}.jpg", id)
output: "image_2db5da20-1c5d-4f1a-8fd4-b41e34c8c5b5.jpg";

Формат строки для спецификаторов:

var value = String.Format("{0:L}", "APPLE"); //output "apple"

value = String.Format("{0:U}", "apple"); // output "APPLE"

value = String.Format("{0:d}", "2017-01-23 00:00"); //output "23.01.2017"


value = String.Format("{0:s}", "21.03.2017 22:15:01") //output "2017-03-21T22:15:01"

value = String.Format("{0:n}", 1000000);
//output "1.000.000"

value = String.Format("{0:00}", 1);
//output "01"

Формат строки для Объекты, содержащие спецификаторы:

var fruit = new Fruit();
fruit.type = "apple";
fruit.color = "RED";
fruit.shippingDate = new Date(2018, 1, 1);
fruit.amount = 10000;

String.Format("the {type:U} is {color:L} shipped on {shippingDate:s} with an amount of {amount:n}", fruit);
// output: the APPLE is red shipped on 2018-01-01 with an amount of 10.000

44
задан ROMANIA_engineer 23 July 2017 в 01:55
поделиться

3 ответа

Наконец-то я получил решение моей проблемы, поэтому я опубликую здесь результаты, если кто-то еще застрянет.

Спасибо Майклу Мартину из Мысли и рассуждения Майкла о программном обеспечении Я обнаружил, что:

keytool по умолчанию использует DSA алгоритм при генерации самоподписанный сертификат. Более ранние версии Firefox принял эти ключи без проблема. В Firefox 3 beta 5, используя DSA не работает, но использование RSA работает. Передача "-keyalg RSA" при генерации самоподписанный сертификат создает полностью сертифицировать Firefox 3 beta 5 принимает.

Я просто установил этот флаг, очистил все кеши в FireFox, и это сработало отлично! Я использую это как тестовую установку для своего проекта, и мне нужно поделиться этим с другими людьми, поэтому я написал небольшой пакетный скрипт, который создает два сертификата SSL. Один можно добавить в настройку Tomcat, а другой - файл .p12, который можно импортировать в FireFox / IE. Спасибо!

Использование: первый аргумент командной строки - это имя пользователя клиента. Все пароли являются «парольными» (без кавычек). Измените любой из жестко запрограммированных битов в соответствии с вашими потребностями.

@echo off
if "%1" == "" goto usage

keytool -genkeypair -alias servercert -keyalg RSA -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -keystore server.jks -storepass password
keytool -genkeypair -alias %1 -keystore %1.p12 -storetype pkcs12 -keyalg RSA -dname "CN=%1,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -storepass password
keytool -exportcert -alias %1 -file %1.cer -keystore %1.p12 -storetype pkcs12 -storepass password
keytool -importcert -keystore server.jks -alias %1 -file %1.cer -v -trustcacerts -noprompt -storepass password
keytool -list -v -keystore server.jks -storepass password
del %1.cer
goto end

:usage
echo Need user id as first argument: generate_keystore [username]
goto end

:end
pause

Результатом являются два файла. Один называется server.jks, который вы загружаете в Tomcat, а другой файл с именем {username} .p12, который вы импортируете в свой браузер. В файл server.jks добавлен сертификат клиента в качестве доверенного сертификата.

Надеюсь, кто-то еще сочтет это полезным.

А вот XML, который необходимо добавить в ваш файл Tomcat conf / sever.xml (проверено только на Tomcat 6.x)

<Connector
   clientAuth="true" port="8443" minSpareThreads="5" maxSpareThreads="75"
   enableLookups="true" disableUploadTimeout="true"
   acceptCount="100" maxThreads="200"
   scheme="https" secure="true" SSLEnabled="true"
   keystoreFile="${catalina.home}/conf/server.jks"
   keystoreType="JKS" keystorePass="password"
   truststoreFile="${catalina.home}/conf/server.jks"
   truststoreType="JKS" truststorePass="password"
   SSLVerifyClient="require" SSLEngine="on" SSLVerifyDepth="2" sslProtocol="TLS"
/>

Для Tomcat 7:

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
           port="8443" SSLEnabled="true"
           maxThreads="200" scheme="https" secure="true"
           keystoreFile="${catalina.base}/conf/server.jks" keystorePass="password"
           clientAuth="false" sslProtocol="TLS" />    
60
ответ дан 26 November 2019 в 22:12
поделиться

Создать сертификат:

keytool -genkey -alias tomcat -keyalg RSA -keystore /home/bob/mykeystore

Введите все данные для самоподписанный сертификат, который вам нужен, затем отредактируйте Tomcat server.xml и укажите свойства хранилища ключей на соединителе SSL, например:

<Connector port="8443" maxHttpHeaderSize="8192"
        maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
        enableLookups="false" disableUploadTimeout="true"
        acceptCount="100" scheme="https" secure="true"
        keystoreFile="/home/bob/mykeystore"
        clientAuth="false" sslProtocol="TLS" />

или следуйте документации Tomcat ...

http: // tomcat. apache.org/tomcat-6.0-doc/ssl-howto.html

2
ответ дан 26 November 2019 в 22:12
поделиться

Чтобы включить аутентификацию клиента, вам необходимо указать «хранилище доверенных сертификатов» для Tomcat: хранилище ключей, содержащее сертификаты корневых центров сертификации, которым вы доверяете, каждый из которых помечен как «trustEntry».

Это указывается в атрибутах элемента Connector : truststoreFile , truststorePass (по умолчанию используется значение keystorePass ) и truststoreType (по умолчанию "JKS").

Если клиент использует самоподписанный сертификат, то его "корневой" CA является самим сертификатом; из этого следует, что вам необходимо импортировать самозаверяющий сертификат клиента в хранилище доверенных сертификатов Tomcat.

Если у вас много клиентов, это быстро станет проблемой. В этом случае, возможно, вы захотите изучить возможность подписания сертификатов для своих клиентов. Команда Java keytool не может этого сделать, но все необходимые утилиты командной строки доступны в OpenSSL. Или вы можете изучить что-то вроде EJBCA в крупном масштабе.

Еще лучше попросите своих клиентов использовать существующий бесплатный CA, например startcom.org . Это не всегда работает для сертификатов сервера, потому что сертификат StartCom не включен во все браузеры, но ситуация обратная, и корневой сертификат StartCom можно легко импортировать в хранилище доверенных сертификатов Tomcat.

Или вы можете изучить что-то вроде EJBCA в крупном масштабе.

А еще лучше попросите своих клиентов использовать существующий бесплатный CA, например startcom.org . Это не всегда работает для сертификатов сервера, потому что сертификат StartCom не включен во все браузеры, но ситуация обратная, и корневой сертификат StartCom можно легко импортировать в хранилище доверенных сертификатов Tomcat.

Или вы можете изучить что-то вроде EJBCA в крупном масштабе.

Еще лучше попросите своих клиентов использовать существующий бесплатный CA, например startcom.org . Это не всегда работает для сертификатов сервера, потому что сертификат StartCom не включен во все браузеры, но ситуация обратная, и корневой сертификат StartCom можно легко импортировать в хранилище доверенных сертификатов Tomcat.

3
ответ дан 26 November 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: