0

私はインターネットを手に入れましたが、答えが得られません。サンプルの cert.py ファイルを作成しました。

import ssl
import traceback

def getCert():
    try:
        m_cert = ssl.get_server_certificate(('www.verisign.com', 443))
    except Exception, e:
        print e
        traceback.print_exc()
        m_cert = ''

    print m_cert
getCert()

「root」権限でこれを試してみたところ、問題なく正常に処理されましたが、他の通常のユーザー アカウントに切り替えると、常に次のようなトレースバックが表示されます。

Traceback (most recent call last):
  File "/tmp/cert.py", line 10, in getCert
    m_cert = ssl.get_server_certificate(('www.verisign.com', 443))
  File "/lib/python2.7/ssl.py", line 405, in get_server_certificate
  File "/lib/python2.7/ssl.py", line 299, in connect
  File "/lib/python2.7/ssl.py", line 283, in do_handshake

また、「openssl」を使用してコマンドを実行しようとしましたが、同じ結果が得られました。ルートは問題ありませんが、通常のユーザーは失敗します。

誰でもこれについていくつかのヒントを与えることができますか?

ありがとう

4

1 に答える 1

0

失敗する理由がわかりました。理由は、私のシステムでは /dev/random が 600 に設定されており、openssl が許可なくアクセスしようとしたためです。

/dev/random を 666 に変更した後、問題は修正されました。

于 2012-09-05T02:22:49.627 に答える