OpenSSL : 開発テスト用のキー、証明書一式生成

import sys
import os
import commands
import re
import libxml2
import random
import sha
import base64

from M2Crypto import RSA

class rsa:
    PRIKEY='pri.pem'
    PUBKEY='pub.pem'
    CSR='csr.pem'
    CERT='cert.pem'
    RAND='rand.txt'

    def __init__(self,provider,name=""):
        self.provider = provider
        self.subject   = "/CN=%s /OU=sys.%s /O=sys /C=JP" % ( self.provider ,self.provider )
        self.x('mkdir -p %s' % (self.provider) )


    def x(self,cmd):
        print cmd
        return commands.getoutput(cmd)

    def remove_certs(self):
        self.x('rm -rf %s' % (self.provider) )

    def create_random(self):
        self.x( 'date | openssl dgst  > %s/%s' \
            % (self.provider,rsa.RAND) )

    def create_pri_key(self):
        self.x( 'openssl genrsa -rand %s/%s -passout pass:hoge -out %s/%s -des3 1024 ' %
            (self.provider,rsa.RAND, self.provider,rsa.PRIKEY) )

    def create_csr(self):
        self.x('openssl req -new -key %s/%s -passin pass:hoge -out %s/%s -subj "%s" ' %\
            (self.provider,rsa.PRIKEY,
                self.provider,rsa.CSR
                  ,self.subject))

    def strip_pri_key_pass(self):
        self.x('openssl rsa -passin pass:hoge -in %s/%s  -out %s/%s' %
            (self.provider,rsa.PRIKEY, self.provider,rsa.PRIKEY ) )

    def create_cert(self):
        self.x('openssl x509 -in %s/%s  -out %s/%s -req -signkey %s/%s' \
            % (self.provider,rsa.CSR,
                self.provider,rsa.CERT,
                    self.provider,rsa.PRIKEY))
    def create_pub_key(self):
        self.x('openssl x509  -pubkey -in %s/%s > %s/%s'\
                %(self.provider,rsa.CERT,
                    self.provider,rsa.PUBKEY))

if __name__ == '__main__':
    p='lafoglia.jp'
    r = rsa(p)
    r.create_random()
    r.create_pri_key()
    r.create_csr()
    r.strip_pri_key_pass()
    r.create_cert()
    r.create_pub_key()
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中