Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 не могу подключится к smtps  [new]
vladimir74
Member

Откуда: Отсюда
Сообщений: 3610
доброго времени суток.
при подключении к smtps серверу выскакивают ошибки при utl_smtp.open_connection, прчем на 11g и на 12c они разные.

11g - ORA-28860: Fatal SSL error
12c - ORA-28750: unknown error

DECLARE
  l_conn utl_smtp.connection;
  l_replies    utl_smtp.replies;
  l_server varchar2(100 char);
  l_wallet_path varchar2(100 char);
  l_wallet_pass varchar2(100 char);
BEGIN
  dbms_output.put_line('open connection');  
  l_conn := utl_smtp.open_connection(host                          => l_server,
                                     port                          => 465,
                                     tx_timeout                    => 20,
                                     wallet_path                   => 'file:'||l_wallet_path,
                                     wallet_password               => l_wallet_pass,
                                     secure_connection_before_smtp => true) ;

  dbms_output.put_line('connection OK');
  utl_smtp.starttls(l_conn);
  l_replies := utl_smtp.ehlo(l_conn, l_server);  
  utl_smtp.close_data(l_conn);
  utl_smtp.quit(l_conn);
  dbms_output.put_line('close connection');  
EXCEPTION
  WHEN OTHERS THEN
      dbms_output.put_line(SQLERRM);
      dbms_output.put_line(dbms_utility.format_error_stack);
      utl_smtp.close_data(l_conn);
      utl_smtp.quit(l_conn);
END;


может кто то сталкивался с такой проблемой?
20 фев 19, 19:39    [21815775]     Ответить | Цитировать Сообщить модератору
 Re: не могу подключится к smtps  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1158
С похожей сталкивался, https.
Так и не решил, сделали обмен по обычному http.
Не решил с конкретным сайтом, с его набором сертификатов. C другим работало.
21 фев 19, 08:06    [21816001]     Ответить | Цитировать Сообщить модератору
 Re: не могу подключится к smtps  [new]
vladimir74
Member

Откуда: Отсюда
Сообщений: 3610
dmdmdm,

к сожалению у меня такой возможности нет. Это новый mail server И работает он только с tls 1.1-1.2
21 фев 19, 10:30    [21816060]     Ответить | Цитировать Сообщить модератору
 Re: не могу подключится к smtps  [new]
vladimir74
Member

Откуда: Отсюда
Сообщений: 3610
еще, путь к wallet правильный, во всяком случае практически все подключения у нас работают только через https. Сертификат загрузили.
SELECT 
  column_value, 
  lower_port, 
  upper_port, 
  privilege,
  status
FROM 
  user_network_acl_privileges, 
  TABLE(DBMS_NETWORK_ACL_UTILITY.DOMAINS('mail.*******'))
ORDER BY 
  DBMS_NETWORK_ACL_UTILITY.DOMAIN_LEVEL(column_value) desc, 
  lower_port,                                              
  upper_port

показывает что привилегии connect resolve есть.
21 фев 19, 11:09    [21816089]     Ответить | Цитировать Сообщить модератору
 Re: не могу подключится к smtps  [new]
Мутаген
Member

Откуда:
Сообщений: 683
Порт не тот.

В порт 465 надо подключаться сразу по TLS, а в порт 587 (или 25) - отрытым текстом, делать STARTTLS и переключаться в шифрованную работу
21 фев 19, 11:43    [21816120]     Ответить | Цитировать Сообщить модератору
 Re: не могу подключится к smtps  [new]
vladimir74
Member

Откуда: Отсюда
Сообщений: 3610
Мутаген,

25 закрыт, и 587 похоже тоже. при попытки подключения в обоих случаях я получаю ошибку: 421 Service not available. Надеюсь сегодня смогу связаться с ажмином который настраивал mail-server.

PS
если я правильно понимаю, параметр secure_connection_before_smtp => true и говорит о том, что надо сразу подключаться с TLS. т.к. до utl_smtp.starttls(l_conn); я даже не дохожу.
21 фев 19, 12:50    [21816210]     Ответить | Цитировать Сообщить модератору
 Re: не могу подключится к smtps  [new]
Мутаген
Member

Откуда:
Сообщений: 683
Попробовал у себя с яндекс.почтой в таком виде.
На 12.1.0.2 работает когда в Wallet есть сертификаты Certum и Yandex
На 18.3 работает при наличии только одного сертификата Certum

Вообще без сертификатов в wallet open_connection выдаёт
ORA-28788: user provided invalid information, or an unknown error

С одним сертификатом Certum на 12.1 выдаёт
ORA-29024: Certificate validation failure

На 11g не проверял (на 9i тоже).

utl_smtp.starttls не нужен при указании secure_connection_before_smtp

Сейчас smtp.yandex.ru присылает полный набор сертификатов, всё должно работать когда в Wallet есть один только Certum, поэтому 12.1 не прав

Без Oracle легко посмотреть с помощью openssl:
openssl s_client -showcerts -connect smtp.yandex.ru:465 < /dev/null

Сейчас там так:

Certificate chain
0 s:/C=RU/O=Yandex LLC/OU=ITO/L=Moscow/ST=Russian Federation/CN=smtp.yandex.ru
i:/C=RU/O=Yandex LLC/OU=Yandex Certification Authority/CN=Yandex CA
1 s:/C=RU/O=Yandex LLC/OU=Yandex Certification Authority/CN=Yandex CA
i:/C=PL/O=Unizeto Technologies S.A./OU=Certum Certification Authority/CN=Certum Trusted Network CA
2 s:/C=PL/O=Unizeto Technologies S.A./OU=Certum Certification Authority/CN=Certum Trusted Network CA
i:/C=PL/O=Unizeto Sp. z o.o./CN=Certum CA
---
Server certificate
subject=/C=RU/O=Yandex LLC/OU=ITO/L=Moscow/ST=Russian Federation/CN=smtp.yandex.ru
issuer=/C=RU/O=Yandex LLC/OU=Yandex Certification Authority/CN=Yandex CA
---

DECLARE
  l_conn        utl_smtp.connection;
  l_replies     utl_smtp.replies;
  l_server      varchar2(100 char) := 'smtp.yandex.ru';
  l_wallet_path CONSTANT VARCHAR2(100) := '///tmp/TEST';
  l_wallet_pass CONSTANT VARCHAR2(100) := 'Welcome123';
BEGIN
  BEGIN
  dbms_output.put_line('open connection');
  l_conn := utl_smtp.open_connection(host                          => l_server,
                                     port                          => 465,
                                     tx_timeout                    => 20,
                                     wallet_path                   => 'file:'||l_wallet_path,
                                     wallet_password               => l_wallet_pass,
                                     secure_connection_before_smtp => true) ;
  dbms_output.put_line('connection OK');
  l_replies := utl_smtp.ehlo(l_conn, 'server');
  dbms_output.put_line('EHLO response');
  FOR i IN l_replies.first .. l_replies.last LOOP
    dbms_output.put_line(l_replies(i).code || '  ' || l_replies(i).text);
  END LOOP;
  dbms_output.put_line('EHLO finished');

  utl_smtp.quit(l_conn);
  dbms_output.put_line('close connection');

  END;
EXCEPTION
  WHEN OTHERS
  THEN
      dbms_output.put_line(SQLERRM);
      dbms_output.put_line(dbms_utility.format_error_stack);
END;
9 мар 19, 13:31    [21828368]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить