web-dev-qa-db-ja.com

サインを呼び出せませんでした:パペットの証明書リクエストが見つかりませんでした

次のガイドを使用して、ec2でパペットを使い始めました。

https://help.ubuntu.com/12.04/serverguide/puppet.html

最後のステップで、パペットマスターからパペットクライアントに署名しようとすると、次のエラーが発生します

root@ip-10-248-27-66:/home/ubuntu# puppetca --sign ec2-54-245-56-210.us-west-2.compute.amazonaws.com
err: Could not call sign: Could not find certificate request for ec2-54-245-56-210.us-west-2.compute.amazonaws.com

これは、操り人形マスターの/etc/hostsの出力です

127.0.0.1 localhost puppetmaster
10.248.34.162 ec2-54-245-56-210.us-west-2.compute.amazonaws.com puppet

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

これはパペットクライアントでの/etc/hostsの出力です

127.0.0.1 localhost
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

ここでトラブルシューティングのアドバイスに従いました https://serverfault.com/a/388973/85577

マスターは稼働していますか?

root@ip-10-248-27-66:/home/ubuntu# service puppetmaster status
 * master is running

ホスト名「puppet」または「puppet.abc.com」はエージェントから解決されますか?

これをどのように確認しますか?ポート8140のpuppetmasterにtelnetするだけですか(Hostコマンドは解決しませんが、telnetコマンドは解決します)?

root@ip-10-248-34-162:/home/ubuntu# Host puppetmaster
Host puppetmaster not found: 3(NXDOMAIN)

Is TCPエージェントから到達可能なマスターのポート8140(try:telnet puppet 8140)?

root@ip-10-248-34-162:/home/ubuntu# telnet puppetmaster 8140
Trying 10.248.27.66...
Connected to ec2-50-112-220-110.us-west-2.compute.amazonaws.com.
Escape character is '^]'.

エージェントのsyslogは何と言っていますか?

Apr 11 17:57:41 ip-10-248-34-162 puppet-agent[3897]: Could not request certificate: getaddrinfo: Name or service not known

エージェントでpuppetエージェント--testを試してください。これにより、マスターに接続してフォアグラウンドに留まり、出力を表示します。

root@ip-10-248-34-162:/home/ubuntu# puppet agent --test
err: Could not request certificate: getaddrinfo: Name or service not known
Exiting; failed to retrieve certificate and waitforcert is disabled

[〜#〜]編集[〜#〜]

/etc/hostsのエントリがこのコマンドで正しいように、dawudに感謝

$ getent hosts puppetmaster
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster

しかし、これを試すとエラーが発生します

$ puppet agent --test --waitforcert 5
err: Could not request certificate: Connection refused - connect(2)
err: Could not request certificate: Connection refused - connect(2)
7
user784637

Puppetmasterとクライアントマシンの両方がpuppetmasterのFQDNを解決できることを確認します。これが機能するためには、両方のマシンで_/etc/hosts_にpuppetmaster IPを追加し、次を使用して確認する必要があります。

_$ ping puppetmaster_または_$ getent hosts puppetmaster_

クライアントマシンからパペットマスターに到達できることを確認してください

_$ telnet puppetmaster 8140_

サーバーによって接続が拒否された場合は、puppetmasterでポートが開いていることを確認してください

_# iptables -L -n -v_

または、そのポートへの着信トラフィックを許可するルールを追加します(これは、iptablesの構成方法に依存します)

_# iptables -A INPUT -p tcp --dport 8140 -m state --state NEW -j ACCEPT_

そして、クライアントから実行します

_# puppet agent --test --waitforcert 5_

その後、操り人形マスターから

_# puppet cert list_

署名の準備ができた証明書が表示されます。指紋がクライアントマシンに属していることを確認できます署名する:

_# puppet cert sign $client_

Puppetmasterはクライアントのカタログをコンパイルし、クライアントコンソールでカタログがどのように適用されるかを追跡できます。

Puppetmasterで証明書を再生成するには、ppuppetmasterを停止して、

# find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete

Puppetmasterを再度起動すると、証明書が再生成されます。

クライアント側では、通常は_/var/lib/puppet/ssl_のssldirの競合を削除するだけで十分ですが、次に呼び出すときに上記のように確認してください

_# puppet agent --test --waitforcert 5_

再作成されます。

最終的には、操り人形マスターの証明書のCNを確認します

_# puppet cert list --all_

そして、任意の名前/ ALT名を/ etc/hostsのエントリと照合します。

11
dawud

議論 ここ で言及され、以前は言及されなかったことの1つは、ポートが奇妙に動作することがあるという回答です。私の場合、iptablesでポート8140を開いているにもかかわらず、接続できないというエラーが発生しました。私を助けたのは次のコマンドです:

iptables -F
service service iptables save

もちろん、上記のコマンドがユーザーで失敗した場合は、Sudoを使用します。ボックスのプロビジョニングスクリプトに上記の2つのコマンドを追加して、ボックスを停止/再作成した場合-iptablesがフラッシュされるようにしました。

1
vishal.biyani

私は同じ問題に直面し、いくつかの異なる微調整でそれを解決しました。

同じエラー:

[root@puppetclient puppet]# puppet agent --server yogesh.puppet.com
--no-daemonize --verbose Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140 Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140 Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140 Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140

Iptables、ポート、ファイアウォール、エージェントの再インストール(マスターではない)をすべて試しました。それから私はもっと調べ始め、ログファイルに次のようなものを見つけました:

I, [2016-04-27T23:21:55.118997 #1745]  INFO -- : activemq.rb:139:in `on_ssl_connecting' Establishing SSL session with stomp+ssl://[email protected]:61613
E, [2016-04-27T23:21:55.131678 #1745] ERROR -- : activemq.rb:149:in `on_ssl_connectfail' SSL session creation with stomp+ssl://[email protected]:61613 failed: SSL_CTX_use_PrivateKey: key values mismatch
I, [2016-04-27T23:21:55.132438 #1745]  INFO -- : activemq.rb:129:in `on_connectfail' TCP Connection to stomp+ssl://[email protected]:61613 failed on attempt 36
I, [2016-04-27T23:22:25.141892 #1745]  INFO -- : activemq.rb:139:in `on_ssl_connecting' Establishing SSL session with stomp+ssl://[email protected]:61613
E, [2016-04-27T23:22:25.144644 #1745] ERROR -- : activemq.rb:149:in `on_ssl_connectfail' SSL session creation with stomp+ssl://[email protected]:61613 failed: SSL_CTX_use_PrivateKey: key values mismatch
I, [2016-04-27T23:22:25.144836 #1745]  INFO -- : activemq.rb:129:in `on_connectfail' TCP Connection to stomp+ssl://[email protected]:61613 failed on attempt 37

これにより、マスターサーバーに存在する証明書がわかりました。マスターキーを再作成したところ、うまくいきました。

注意:これは私にとって唯一のテスト環境でした。本番環境で直接操作しないでください。

[root@YogeshRaheja init.d]# puppet cert clean "yogesh.puppet.com"
Notice: Revoked certificate with serial 11
Notice: Removing file Puppet::SSL::Certificate yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/ca/signed/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::Certificate yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/certs/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::CertificateRequest yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/certificate_requests/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::Key yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/private_keys/yogesh.puppet.com.pem'


[root@YogeshRaheja init.d]# puppet cert generate yogesh.puppet.com
Notice: yogesh.puppet.com has a waiting certificate request
Notice: Signed certificate request for yogesh.puppet.com
Notice: Removing file Puppet::SSL::CertificateRequest yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/ca/requests/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::CertificateRequest yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/certificate_requests/yogesh.puppet.com.pem'


[root@YogeshRaheja init.d]# ./pe-puppetserver start
Starting pe-puppetserver:                                  [  OK  ]
[root@YogeshRaheja init.d]#
[root@YogeshRaheja init.d]#
[root@YogeshRaheja init.d]# netstat -an | grep -i listen
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:5432                0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 :::4433                     :::*                        LISTEN
tcp        0      0 :::8081                     :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 ::1:631                     :::*                        LISTEN
tcp        0      0 :::5432                     :::*                        LISTEN
tcp        0      0 ::1:25                      :::*                        LISTEN
tcp        0      0 :::42632                    :::*                        LISTEN
tcp        0      0 :::8140                     :::*                        LISTEN
tcp        0      0 :::61613                    :::*                        LISTEN

そしてそれはクライアント接続問題を解決しました。

0
Yogesh Raheja