28393


Java Spark（jettyの方）で読み込ませられるキーストアを作成したいのですが、方法が分かりません。  
SSLは初めてで理解できていないので意味不明なことを言っていたらすいません。  
正しいと思う内容で解釈していただければと思います。

ジオトラストラピッドSSLにて取得済みのため、現在手元にあるのは  
**・サーバーキー（server.key）**  
**・サーバー証明（server.crt）**

**・ジオトラスト中間証明（chain.crt）**  
**・ジオトラストから貰ったサーバー証明（aaa.crt）**  
です。

※↑拡張子とファイルの形式が違うとのコメントを頂きました。  
誤解を招かないようにそのコメントだけここに引用して後で修正しておきます。

> aaa.crt がサーバー証明書  
>  server.crt は拡張子が .crt ですが、中身は CSR aaa.crt があれば必要ありません。

これらファイルからキーストアファイル（JKS形式？）を作成したいのですがさっぱり分かりません。

１つのkeystoreファイルをプログラムで読み込めがSSLが使えるようになるようにしてくて、（Sparkではそうでないといけない）  
上記ファイルを元に１つのkeystoreファイルを作りたいです

一度pkcs12にして、そこからkeystoneに変換しようとして以下を試しました。  
**・chain.crt と aaa.crt を結合（multiple.crt）**  
pkcsを作成するために以下のコマンドを実行しました。

[code]

    openssl pkcs12 -inkey server.key -in multiple.crt -export -out super.pkcs12 -nodes -nocerts
    
[/code]

（最後の「-nodes -nocerts」をつけないと「No certificate matches private key」というエラーが発生しました。）

それをkeystore（JKS?)に変換しようとして下を実行しました

[code]

    keytool -importkeystore -srckeystore super.pkcs12 -srcstoretype PKCS12 -destkeystore keystone
    
[/code]

すると「keytoolエラー: java.lang.NullPointerException: invalid null
input」というエラーが出て先に進めないです。

* * *

追記  
server.crtは  
BEGIN CERTIFICATE REQUEST

chain.crtは  
BEGIN CERTIFICATE

これらを結合した「server_chain.crt」はただ単に両方をテキストで結合しただけです

> \-----BEGIN CERTIFICATE REQUEST-----  
>  xxxx  
>  \-----END CERTIFICATE REQUEST-----
>
> \-----BEGIN CERTIFICATE-----  
>  xxxx  
>  \-----END CERTIFICATE-----

* * *

追記（本題ではないがこれも多いかと、、、）  
これら方法でキーストアファイルを作ってもプログラムで読み込むと「Cannot recover
key」というエラーが出る可能性があります。（プログラムによっては必ず）  
Java Sparkの場合ですが、キーストアファイルを指定するメソッドにはキーストアファイルのパスワードしか入力するところがありません。  
キーストア内のエイリアスのパスワード？とキーストアのパスワードを同じにする必要があります。  
（エイリアス名、入力パスなどはこの質問のベストアンサーから）

[code]

    keytool -keypasswd -keystore keystore  -alias myserver
    
[/code]


CC BY-SA 3.0
2016-08-20T06:24:51.973
28386
2016-08-23T02:51:14.553
2016-08-23T02:51:14.553
10346
10346
question
java ssl spark
SSLのためにJKS形式ののキーストアを作りたい


openssl pkcs12 コマンドのオプションに `-chain` が必要なのではないでしょうか。

[code]

    openssl pkcs12 -inkey server.key -in server+chain.crt -export -out super.pkcs12 -name myserver -CAfile aaa.crt -caname root -chain
    keytool -importkeystore -srckeystore super.pkcs12 -srcstoretype PKCS12 -srcalias myserver -destkeystore keystore -deststoretype JKS
    
[/code]

### 訂正、まとめ

すみません、読み違えました。aaa.crt がサーバー証明書なのですね。

[code]

    openssl pkcs12 -inkey server.key -in aaa+chain.crt -export -out super.pkcs12 -name myserver
    keytool -importkeystore -srckeystore super.pkcs12 -srcstoretype PKCS12 -srcalias myserver -destkeystore keystore -deststoretype JKS
    
[/code]


CC BY-SA 3.0
2016-08-20T09:34:42.767
28393
2016-08-22T05:46:46.750
2016-08-22T05:46:46.750
4603
4603
28386
answer