web-dev-qa-db-ja.com

SSLを有効にするためにSpring Bootに.crtを追加する

これまでに行ったことはなく、ほとんどのチュートリアルでは.crtファイルの処理方法について言及していません。

GoDaddyからSSL証明書を購入し、ダウンロード時にプラットフォームとしてTomcatを選択しました。 Zipファイルには3つのファイルが含まれていました。

dea08asdjakjawl.crt  
Gd_bundle-g1-g1.crt  
gdig.crt.pem  

CentOS7サーバーでSpring Bootアプリケーション(Tomcatが埋め込まれたポート80)を実行しています。 (サーバーはDigital Oceanで実行されており、割り当てられたドメインがあり、単純なhttpで動作します)

https://something.com に切り替えたい

すべてのチュートリアルでは、そのために.jksファイルまたは.p12ファイルが必要であることを示唆していますが、.crtファイルをそのファイルに変換できませんでした。ほかに、2つの.crtファイルのどれが.jks/.p12に変換する必要があるかわかりません。

これを私のapplication.yamlに追加しましたが、役に立ちませんでした:

server:    
  port: 443  
  ssl:  
    enabled: true  
    key-alias: server  
    key-store: "cert.crt"  
    key-store-password: "***"  

この証明書を使用してHTTPSクエリを受け入れるように、実行中のSpring Bootプロジェクトを変更するにはどうすればよいですか?

7
Macskasztorik

したがって、正しい手順は次のとおりです。

Java Key Storeを代わりに使用して、CSRをゼロから再作成する必要がありました。

keytool -genkey -alias mydomain -keyalg RSA -keystore KeyStore.jks -keysize 2048

次に、新しいCSR:

keytool -certreq -alias mydomain -keystore KeyStore.jks -file mydomain.csr

新しい.cerファイルを生成するには、証明書プロバイダーに再送信する必要がありました。したがって、彼らは私に上記の2つの.cerファイルを送り返しました。「バンドル」ファイルは中間の.cerでした。これを次のように追加する必要がありました。

keytool -import -trustcacerts -alias intermediate -file intermediate.crt -keystore KeyStore.jks

次に、次のような実際の「長い名前の」.cerファイル:

keytool -import -trustcacerts -alias mydomain -file mydomain.crt -keystore KeyStore.jks

次に、これは次のようにp12に変換できるものです。

 keytool -importkeystore -srckeystore <MY_KEYSTORE.jks> -destkeystore <MY_FILE.p12> -srcstoretype JKS -deststoretype PKCS12 -deststorepass <PASSWORD_PKCS12> -srcalias <ALIAS_SRC> -destalias <ALIAS_DEST>

最後に、application.propertiesには追加の行が必要で、次のようになります。

server.port=443
server.ssl.enabled=true
security.require-ssl=true
server.ssl.key-store=keystore.p12
server.ssl.key-store-password=password
server.ssl.key-alias=domain
server.ssl.key-password=password

そしてそれはついに働いています。

4
Macskasztorik

キーストアとトラスストアを作成する必要があります(またはJavaが提供するデフォルトのトラスストアを使用します)。キーストアには、秘密鍵とサーバー証明書が含まれます。トラストストアにはCA証明書が含まれます。 p12キーストアを作成するには

openssl pkcs12 -export -in [path/to/certificate] -inkey [path/to/privatekey] -certfile [path/to/ca/certificate ] -out keystore.p12

キーストアのパスワードを入力します。このキーストアをapplication.yamlで設定します。

トラストストアエントリの場合、Javaのデフォルトのトラストストアを使用している場合は、CA証明書を... jre/lib/security/cacertsに追加します。

keytool -import -trustcacerts -alias root -file ca.crt -keystore cacerts

または、trusstoreを作成し、application.yamlでこのトラストストアを設定することもできます

インターネット上で簡単に見つけて変換/作成/インポート/エクスポート/リストするすべてのkeytoolコマンド...

あなたがどれであるかを確認できる3つのファイルが提供されました-1.証明書である必要があります2. CA証明書チェーンである必要があります

3
Mukesh

Opensslをスプリングブートに追加する場合。

Opensslソフトウェアをすでにインストールしている場合は、以下の手順に従ってください。 //キーと公開証明書を作成する

openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem

//テスト

openssl x509 -text -noout -in certificate.pem

//鍵と公開証明書を組み合わせる

openssl pkcs12 -inkey key.pem -in certificate.pem -export -out certificate.p12

// openssl pkcs12 -in certificate.p12 -noout -infoをテストします

春のブーツのプロパティで以下を追加

server.ssl.enabled=true
server.ssl.key-store-type=PKCS12
# The path to the keystore containing the certificate
server.ssl.key-store=classpath:certificate.p12
# The password used to generate the certificate
server.ssl.key-store-password=password

参照