• Emacs と Perl を使って,XML-RPC 経由で Movable Type のエントリを編集するツールを配布しています.良かったら持っていってください.( 2004/10/24 update) mapae logo
  • Movable Type で footnote*1 を生成する plugin を配布しています.良かったら持っていってください.( 2004/03/04 update )
  • その他の配布物等

*1: 脚注.よ〜するに,こ〜ゆ〜やつです.

なんちゃってCA

| コメント(0) | トラックバック(0)

開発用になんちゃって CA をたてることがあるが、毎回調べるのが面倒くさいのでメモ。

所詮開発環境用なので、

  • CAも含めて秘密鍵の暗号化はなし
  • シリアル値は、CA証明書と CSR の SHA1 ハッシュ値で代用
    • 20オクテットまでは使っても大丈夫っぽい *1
BASE_SUBJ ?= /C=JP/O=Helios/OU=HeliosTest
CA_SUBJ   ?= $(BASE_SUBJ)/CN=HeliosTestCA

SERVER_CERT ?= server.crt
SERVER_KEY  ?= server.key
SERVER_DAYS ?= 365
SERVER_BITS ?= 1024

CA_CERT   ?= ca/cacert.crt
CA_KEY    ?= ca/cacert.key
CA_DAYS   ?= 3650
CA_BITS   ?= 2048

OPENSSL    := openssl
SERVER_CSR := server.csr

.PHONY: all cert cacert
all: cert
cert: $(SERVER_CERT) verify
cacert: $(CA_CERT)

$(SERVER_CERT): $(CA_CERT) $(SERVER_CSR)
	@mkdir -p $(dir $(SERVER_CERT)) $(dir $(SERVER_KEY))
	$(OPENSSL) x509 -req -days $(SERVER_DAYS) \
	  -in $(SERVER_CSR) -out $@ \
	  -CA $(CA_CERT) -CAkey $(CA_KEY) \
	  -set_serial 0x$(shell cat $^ | $(OPENSSL) sha1 -hex)

.INTERMEDIATE: $(SERVER_CSR)
$(SERVER_CSR):
	@mkdir -p $(dir $(SERVER_CSR))
	echo -n "CN: " && read cert_host \
	&& $(OPENSSL) req -new \
	  -newkey rsa:$(SERVER_BITS) -nodes \
	  -out $@ -keyout $(SERVER_KEY) \
	  -subj "$(BASE_SUBJ)/CN=$$cert_host" \
	  -batch \

$(CA_CERT):
	@mkdir -p $(dir $(CA_CERT)) $(dir $(CA_KEY))
	$(OPENSSL) req -new -x509 -days $(CA_DAYS) \
	  -newkey rsa:$(CA_BITS) -nodes \
	  -out $(CA_CERT) -keyout $(CA_KEY) \
	  -subj "$(CA_SUBJ)" \
	  -batch

.PHONY: show-hash show-hash-ca show-hash-server
show-hash: show-hash-server
show-hash-ca: $(CA_CERT)
	$(OPENSSL) x509 -in $(CA_CERT) -noout -hash

show-hash-server: $(SERVER_CERT)
	$(OPENSSL) x509 -in $(SERVER_CERT) -noout -hash

.PHONY: show-info show-info-ca show-info-server
show-info: show-info-server
show-info-ca: $(CA_CERT)
	$(OPENSSL) x509 -in $(CA_CERT) -noout -text -purpose

show-info-server: $(SERVER_CERT)
	$(OPENSSL) x509 -in $(SERVER_CERT) -noout -text -purpose

.PHONY: verify
verify: $(SERVER_CERT)
	$(OPENSSL) verify -CAfile $(CA_CERT) $(SERVER_CERT)

.PHONY: clean clean-all
clean::
	rm -f $(SERVER_CERT) $(SERVER_KEY)
clean-all:: clean
	rm -f $(CA_CERT) $(CA_KEY)

.PHONY: test
test: $(SERVER_CERT)
	$(OPENSSL) s_server -cert $(SERVER_CERT) -key $(SERVER_KEY) -www

トラックバック(0)

トラックバックURL: http://d.nym.jp/mt/trackback/2103

コメントする

最近のコメント

アーカイブ

Author

nym <n...@nym.jp>
Powered by Movable Type 5.161-ja