SSLError при попытке создать сервер EC2 с ножом

Я пытаюсь создать и предоставить новый экземпляр EC2 с помощью ножа, но продолжаю сталкиваться с ошибкой SSL:

$bundle exec knife ec2 server create
ERROR: Excon::Errors::SocketError: hostname "ec2.us-east-1b.amazonaws.com" does not match the server certificate (OpenSSL::SSL::SSLError)

Я запускаю это с Mac (10.7), используя ruby ​​​​2.0.0p0:

$ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin11.4.2]

Я совершенно уверен, что правильно скомпилировал ruby ​​с поддержкой openssl. Запуск require 'openssl' из irb возвращает true. Я использую OpenSSL 1.0.1e, установленный через homebrew.

Я также пробовал бегущий нож с рубином 1.9.3-p194. Это имеет тот же результат, но с чуть менее полезным сообщением об ошибке: «ОШИБКА: Excon::Errors::SocketError: имя хоста не соответствует сертификату сервера (OpenSSL::SSL::SSLError)». Эта разница является результатом этого запроса на вытягивание, который улучшил сообщение об ошибке: https://github.com/ruby/ruby/pull/122.

Следующий вывод из curl может иметь значение:

$curl -v https://ec2.us-east-1b.amazonaws.com
* About to connect() to ec2.us-east-1b.amazonaws.com port 443 (#0)
*   Trying 67.215.65.132... connected
* Connected to ec2.us-east-1b.amazonaws.com (67.215.65.132) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using AES256-SHA
* Server certificate:
*    subject: serialNumber=UoFmxu6ta5ecJiIs4su2w-q-u8rxJ/d3; OU=GT55236522; OU=See www.rapidssl.com/resources/cps (c)12; OU=Domain Control Validated - RapidSSL(R); CN=*.opendns.com
*    start date: 2012-08-23 10:11:50 GMT
*    expire date: 2014-09-25 12:42:00 GMT
*    subjectAltName does not match ec2.us-east-1b.amazonaws.com
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
* SSL peer certificate or SSH remote key was not OK
curl: (51) SSL peer certificate or SSH remote key was not OK

Есть ли что-то еще, что мне нужно настроить, чтобы успешно создать экземпляр EC2 с ножом?


person AndrewF    schedule 15.03.2013    source источник


Ответы (2)


В моем файле конфигурации knife.rb у меня была эта строка:

knife[:region] = 'us-east-1b'

Это работало в какой-то момент в прошлом, но правильная текущая настройка:

knife[:region] = 'us-east-1'

Удаление «b» устраняет ошибку имени хоста SSL:

$curl -v https://ec2.us-east-1.amazonaws.com
* About to connect() to ec2.us-east-1.amazonaws.com port 443 (#0)
*   Trying 205.251.242.7... connected
* Connected to ec2.us-east-1.amazonaws.com (205.251.242.7) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using RC4-MD5
* Server certificate:
*    subject: C=US; ST=Washington; L=Seattle; O=Amazon.com Inc.; CN=ec2.us-east-1.amazonaws.com
*    start date: 2010-10-08 00:00:00 GMT
*    expire date: 2013-10-07 23:59:59 GMT
*    subjectAltName: ec2.us-east-1.amazonaws.com matched
*    issuer: C=US; O=VeriSign, Inc.; OU=VeriSign Trust Network; OU=Terms of use at https://www.verisign.com/rpa (c)09; CN=VeriSign Class 3 Secure Server CA - G2
*    SSL certificate verify ok.
> GET / HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: ec2.us-east-1.amazonaws.com
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Location: http://aws.amazon.com/ec2
< Content-Length: 0
< Date: Sat, 16 Mar 2013 21:15:51 GMT
< Server: AmazonEC2
<
* Connection #0 to host ec2.us-east-1.amazonaws.com left intact
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
person AndrewF    schedule 16.03.2013

Когда вы устанавливаете шеф-клиент на свой Mac Book, он автоматически устанавливает нож и зависимые библиотеки, вам не нужно делать это вручную. Вам не нужно запускать пакет exec, просто введите Knife EC2 Server Create, вы получите следующий вывод

** EC2 COMMANDS **
knife ec2 server list (options)
knife ec2 server delete SERVER [SERVER] (options)
knife ec2 server create (options)
knife ec2 instance data (options)
knife ec2 flavor list (options)

Если вы получаете этот вывод, значит, ваш нож работает правильно. А также убедитесь, что ваш knife.rb настроен правильно, если у вас возникнут какие-либо проблемы, дайте мне знать.

person Jeevan Dongre    schedule 16.03.2013
comment
Установка ножа глобально (без бандлера) ничего не изменила. Я безуспешно пытался удалить и переустановить повара глобально. Я получаю ту же ошибку SSL, когда запускаю создание сервера ножа ec2 без выполнения пакета. - person AndrewF; 17.03.2013
comment
Бандлер был отвлекающим маневром, но я еще раз взглянул на файл knife.rb из-за вашего ответа. Проголосуйте. - person AndrewF; 17.03.2013