3

OpenSSLを使用せずにPythonでCSRを生成しようとしています。誰かが正しい方向を指すことができれば、私は非常に感謝しています。

4

4 に答える 4

4

コマンドラインopenssl自体を使用したくないと仮定し、Python libで問題ありません。

これは、CSR を作成するために作成したヘルパー関数です。生成されたキー ペアと CSR から秘密キーを返します。関数は pyOpenSSL.crypto に依存します。

def create_csr(self, common_name, country=None, state=None, city=None,
               organization=None, organizational_unit=None,
               email_address=None):
    """
    Args:
        common_name (str).

        country (str).

        state (str).

        city (str).

        organization (str).

        organizational_unit (str).

        email_address (str).

    Returns:
        (str, str).  Tuple containing private key and certificate
        signing request (PEM).
    """
    key = OpenSSL.crypto.PKey()
    key.generate_key(OpenSSL.crypto.TYPE_RSA, 2048)

    req = OpenSSL.crypto.X509Req()
    req.get_subject().CN = common_name
    if country:
        req.get_subject().C = country
    if state:
        req.get_subject().ST = state
    if city:
        req.get_subject().L = city
    if organization:
        req.get_subject().O = organization
    if organizational_unit:
        req.get_subject().OU = organizational_unit
    if email_address:
        req.get_subject().emailAddress = email_address

    req.set_pubkey(key)
    req.sign(key, 'sha256')

    private_key = OpenSSL.crypto.dump_privatekey(
        OpenSSL.crypto.FILETYPE_PEM, key)

    csr = OpenSSL.crypto.dump_certificate_request(
               OpenSSL.crypto.FILETYPE_PEM, req)

    return private_key, csr
于 2015-11-01T17:46:19.883 に答える
1

OpenSSL に依存していますが、 m2cryptoは解決策になる可能性があります ( contrib の例の CreateX509Request を参照)。

Mozilla の NSS ライブラリを使用するpython-nssを使用することもできます。ごく最近追加されました。Web サイトで現在利用できる API ドキュメントは最新ではありませんが、新しいバージョンのいくつかの指針を以下に示します。nss.nss.CertificateRequest

それはCVSにもあります:

:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot/mozilla/security/python/nss 
于 2010-08-10T15:43:52.363 に答える
0

ここ数日、PyCrypto と PyASN1 を使用して CSR ジェネレーターの実装を開始しました。最初のコードはhttps://github.com/jandd/python-pkiutilsで入手できます

于 2014-01-19T18:05:18.603 に答える
-5

他の言語と同様に、Pythonはアルゴリズムを実装するだけです。暗号化についてはほとんど何も知りませんが、Pythonでこれを実装する必要がある場合は、CSRの実装方法に関する仕様を探します。

グーグルとウィキペディアを介して私はこのRFCを見つけました。あなたの仕事はこれをPythonで実装することです。

個人的には、おそらく最初にコマンドラインツールを使用しようとします(system()Pythonからの必要がある場合は、関数の呼び出しを介して)。

于 2010-07-09T21:22:18.153 に答える