[Jusqu'au 5 mars 2020] Renouveler le certificat RDS pour java

prologue

Mettez à jour votre application pour vous connecter à votre instance de base de données MySQL avec un nouveau certificat SSL / TLS (https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/ssl-certificate-rotation- mysql.html)

Une histoire qui veuillez mettre à jour ca de RDS d'ici le 5 mars 2020. Il n'y a pas de problème si vous suivez la procédure, mais j'ai écrit un article car il y avait des points addictifs. ~~ J'étais tellement accro à ça que j'ai écrit un article.

supposition

・ Java ・ Tomcat ・ Mysql ・ Le certificat est au format JKS -Mettre à jour le certificat client d'abord et le certificat mysql plus tard (En cas de simultanéité, le certificat à télécharger est différent)

procédure

1. Obtention d'un certificat

Nous allons d'abord mettre à jour le client, donc téléchargez la version fournie de ~~ 2015, 2019 ~~ ** Téléchargez les certificats de 2015 et 2019 **

L'endroit est-il le même que maintenant?

$ cd /etc/pki/java
$ wget https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem
$ wget https://s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem
$ wget https://s3.amazonaws.com/rds-downloads/rds-ca-2019-ap-northeast-1.pem
$ wget https://s3.amazonaws.com/rds-downloads/rds-ca-2015-ap-northeast-1.pem

--2020-01-22 21:19:38--  https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem
s3.amazonaws.com (s3.amazonaws.com)Demande au DNS... 52.216.139.61
s3.amazonaws.com (s3.amazonaws.com)|52.216.139.61|:Connexion au 443...Connecté.
Envoyé une demande de connexion via HTTP, en attente d'une réponse... 200 OK
longueur: 1456 (1.4K) [binary/octet-stream]
`rds-ca-2019-root.pem'Enregistrer dans

100%[==========================================================================================================================================>] 1,456       --.-K/s temps 0s

2020-01-22 21:19:40 (12.8 MB/s) - `rds-ca-2019-root.pem'Enregistrer dans[1456/1456]

[root@letsnote java]#  wget https://s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem
--2020-01-22 21:19:40--  https://s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem
s3.amazonaws.com (s3.amazonaws.com)Demande au DNS... 52.216.139.61
s3.amazonaws.com (s3.amazonaws.com)|52.216.139.61|:Connexion au 443...Connecté.
Envoyé une demande de connexion via HTTP, en attente d'une réponse... 200 OK
longueur: 1432 (1.4K) [binary/octet-stream]
`rds-ca-2015-root.pem'Enregistrer dans

100%[==========================================================================================================================================>] 1,432       --.-K/s temps 0s

2020-01-22 21:19:41 (13.0 MB/s) - `rds-ca-2015-root.pem'Enregistrer dans[1432/1432]

[root@letsnote java]#  wget https://s3.amazonaws.com/rds-downloads/rds-ca-2019-ap-northeast-1.pem
--2020-01-22 21:19:41--  https://s3.amazonaws.com/rds-downloads/rds-ca-2019-ap-northeast-1.pem
s3.amazonaws.com (s3.amazonaws.com)Demande au DNS... 52.216.139.61
s3.amazonaws.com (s3.amazonaws.com)|52.216.139.61|:Connexion au 443...Connecté.
Envoyé une demande de connexion via HTTP, en attente d'une réponse... 200 OK
longueur: 1464 (1.4K) [binary/octet-stream]
`rds-ca-2019-ap-northeast-1.pem'Enregistrer dans

100%[==========================================================================================================================================>] 1,464       --.-K/s temps 0s

2020-01-22 21:19:42 (13.3 MB/s) - `rds-ca-2019-ap-northeast-1.pem'Enregistrer dans[1464/1464]

[root@letsnote java]#  wget https://s3.amazonaws.com/rds-downloads/rds-ca-2015-ap-northeast-1.pem
--2020-01-22 21:19:42--  https://s3.amazonaws.com/rds-downloads/rds-ca-2015-ap-northeast-1.pem
s3.amazonaws.com (s3.amazonaws.com)Demande au DNS... 52.216.139.61
s3.amazonaws.com (s3.amazonaws.com)|52.216.139.61|:Connexion au 443...Connecté.
Envoyé une demande de connexion via HTTP, en attente d'une réponse... 200 OK
longueur: 1448 (1.4K) [binary/octet-stream]
`rds-ca-2015-ap-northeast-1.pem'Enregistrer dans

100%[==========================================================================================================================================>] 1,448       --.-K/s temps 0s

2020-01-22 21:19:43 (10.0 MB/s) - `rds-ca-2015-ap-northeast-1.pem'Enregistrer dans[1448/1448]

Si vous souhaitez mettre à jour le client et le serveur en même temps, cryptez la connexion à l'instance de base de données à l'aide de SSL / TLS (https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL] De .html) à la version 2019. Pour la région de Tokyo, rds-ca-2019-ap-northeast-1.pem

2. Conversion de certificat

Convertir pem en jks Vous devez faire deux étapes, pem-> der et der-> jks ** Lors de la conversion en jks, utilisez un nom de fichier différent du certificat actuel ** Le mot de passe peut être le même que maintenant. Puisqu'il s'agit d'un accès aux certificats, cela n'a rien à voir avec le mot de passe DB.

$ cd /etc/pki/java
$ openssl x509 -outform der -in ./rds-ca-2019-root.pem -out ./rds-ca-2019-root.der
$ openssl x509 -outform der -in ./rds-ca-2015-root.pem -out ./rds-ca-2015-root.der
$ openssl x509 -outform der -in ./rds-ca-2019-ap-northeast-1.pem -out ./rds-ca-2019-ap-northeast-1.der
$ openssl x509 -outform der -in ./rds-ca-2015-ap-northeast-1.pem -out ./rds-ca-2015-ap-northeast-1.der
$ ll

lrwxrwxrwx.1 racine racine 40 9 juin 2019 cacerts-> /etc/pki/ca-trust/extracted/java/cacerts
-rw-r--r--1 racine racine 1029 22 janvier 21:23 rds-ca-2015-ap-northeast-1.der
-rw-r--r--1 racine racine 1448 7 mars 2015 rds-ca-2015-ap-northeast-1.pem
-rw-r--r--1 racine racine 1016 22 janvier 21:23 rds-ca-2015-root.der
-rw-r--r--1 racine racine 1432 7 mars 2015 rds-ca-2015-root.pem
-rw-r--r--1 racine racine 1040 22 janvier 21:23 rds-ca-2019-ap-northeast-1.der
-rw-r--r--1 racine racine 1464 19 septembre 02:07 rds-ca-2019-ap-northeast-1.pem
-rw-r--r--1 racine racine 1034 22 janvier 21:23 rds-ca-2019-root.der
-rw-r--r--1 racine racine 1456 5 septembre 02:53 rds-ca-2019-root.pem
[root@letsnote java]#

$ keytool -import -file ./rds-ca-2019-root.der -destkeystore ./rds-combined-ca-bundle-2019.jks -deststoretype jks -alias rds_root

Veuillez saisir le mot de passe du fichier de clés:
Le mot de passe du fichier de clés est trop court-Doit être au moins 6 caractères
Veuillez saisir le mot de passe du fichier de clés:
Veuillez saisir à nouveau votre nouveau mot de passe:
propriétaire: CN=Amazon RDS Root 2019 CA, OU=Amazon RDS, O="Amazon Web Services, Inc.", ST=Washington, L=Seattle, C=US
Émetteur: CN=Amazon RDS Root 2019 CA, OU=Amazon RDS, O="Amazon Web Services, Inc.", ST=Washington, L=Seattle, C=US
Numéro de série: c73467369250ae75
Date de début de validité: Fri Aug 23 02:08:50 JST 2019 Date de fin: Fri Aug 23 02:08:50 JST 2024
Empreinte digitale du certificat:
         MD5:  66:EC:63:BB:25:C4:A5:34:82:C6:C0:18:2E:88:9F:0D
         SHA1: D4:0D:DB:29:E3:75:0D:FF:A6:71:C3:14:0B:BF:5F:47:8D:1C:80:96
         SHA256: F2:54:C7:D5:E9:23:B5:B7:51:0C:D7:9E:F7:77:7C:1C:A7:E6:4A:3C:97:22:E4:0D:64:54:78:FC:70:AA:D0:08
Nom de l'algorithme de signature: SHA256withRSA
Algorithme de clé publique du sujet:Clé RSA 2048 bits
version: 3

Expansion:

#1: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 73 5F 60 D8 BC CB 03 98   F4 2B 17 34 2E 36 5A A6  s_`......+.4.6Z.
0010: 60 FF BC 1F                                        `...
]
]

#2: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

#3: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  Key_CertSign
  Crl_Sign
]

#4: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 73 5F 60 D8 BC CB 03 98   F4 2B 17 34 2E 36 5A A6  s_`......+.4.6Z.
0010: 60 FF BC 1F                                        `...
]
]

Faites-vous confiance à ce certificat?[Non]:Oui
Certificat ajouté au keystore

$ keytool -import -file ./rds-ca-2015-root.der -destkeystore ./rds-combined-ca-bundle-2019.jks -deststoretype jks -alias rds_root_2015
$ keytool -import -file ./rds-ca-2019-ap-northeast-1.der -destkeystore ./rds-combined-ca-bundle-2019.jks -deststoretype jks -alias rds_ap-northeast-1
$ keytool -import -file ./rds-ca-2015-ap-northeast-1.der -destkeystore ./rds-combined-ca-bundle-2019.jks -deststoretype jks -alias rds_ap-northeast-1_2015

$ ll

-rw-r--r--1 racine racine 1029 22 janvier 21:23 rds-ca-2015-ap-northeast-1.der
-rw-r--r--1 racine racine 1448 7 mars 2015 rds-ca-2015-ap-northeast-1.pem
-rw-r--r--1 racine racine 1016 22 janvier 21:23 rds-ca-2015-root.der
-rw-r--r--1 racine racine 1432 7 mars 2015 rds-ca-2015-root.pem
-rw-r--r--1 racine racine 1040 22 janvier 21:23 rds-ca-2019-ap-northeast-1.der
-rw-r--r--1 racine racine 1464 19 septembre 02:07 rds-ca-2019-ap-northeast-1.pem
-rw-r--r--1 racine racine 1034 22 janvier 21:23 rds-ca-2019-root.der
-rw-r--r--1 racine racine 1456 5 septembre 02:53 rds-ca-2019-root.pem
-rw-r--r--1 racine racine 4313 22 janvier 21:26 rds-combined-ca-bundle-2019.jks

$ keytool -v -list -keystore  ./rds-combined-ca-bundle-2019.jks

Veuillez saisir le mot de passe du fichier de clés:
Type de fichier de clés: jks
Fournisseur de keystore: SUN

Keystore contient 4 entrées

alias: rds_root_2015
Date de création: 2020/01/22
Type d'entrée: trustedCertEntry

propriétaire: CN=Amazon RDS Root CA, OU=Amazon RDS, O="Amazon Web Services, Inc.", L=Seattle, ST=Washington, C=US
Émetteur: CN=Amazon RDS Root CA, OU=Amazon RDS, O="Amazon Web Services, Inc.", L=Seattle, ST=Washington, C=US
Numéro de série: 42
Date de début de validité: Thu Feb 05 18:11:31 JST 2015 date de fin: Thu Mar 05 18:11:31 JST 2020
Empreinte digitale du certificat:
         MD5:  CF:C1:A2:0D:A1:C1:B1:3C:12:0B:C1:5A:E5:33:73:EF
         SHA1: E8:11:88:56:E7:A7:CE:3E:5E:DC:9A:31:25:1B:93:AC:DC:43:CE:B0
         SHA256: AF:EB:B8:40:BE:0C:1A:F6:5E:63:E0:CB:D7:9C:CE:35:65:4B:F6:0F:4E:07:62:54:BB:A9:35:E9:63:6D:53:F7
Nom de l'algorithme de signature: SHA1withRSA
Algorithme de clé publique du sujet:Clé RSA 2048 bits
version: 3

Expansion:

#1: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 4E 02 EE AC 3E F6 15 C8   4C ED 2C F5 05 C1 8F 9C  N...>...L.,.....
0010: 84 08 49 83                                        ..I.
]
]

#2: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

#3: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  Key_CertSign
  Crl_Sign
]

#4: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 4E 02 EE AC 3E F6 15 C8   4C ED 2C F5 05 C1 8F 9C  N...>...L.,.....
0010: 84 08 49 83                                        ..I.
]
]



*******************************************
*******************************************


alias: rds_ap-northeast-1
Date de création: 2020/01/22
Type d'entrée: trustedCertEntry

propriétaire: CN=Amazon RDS ap-northeast-1 2019 CA, OU=Amazon RDS, O="Amazon Web Services, Inc.", L=Seattle, ST=Washington, C=US
Émetteur: CN=Amazon RDS Root 2019 CA, OU=Amazon RDS, O="Amazon Web Services, Inc.", ST=Washington, L=Seattle, C=US
Numéro de série: 7045
Date de début de validité: Thu Sep 19 01:56:20 JST 2019 date de fin: Fri Aug 23 02:08:50 JST 2024
Empreinte digitale du certificat:
         MD5:  E1:E7:BE:95:BC:D4:C1:F8:BE:8C:44:EE:A1:34:48:0C
         SHA1: 47:A3:F9:20:64:5C:9F:9D:48:8C:7D:E6:0B:86:D6:05:13:00:16:A1
         SHA256: 90:91:AF:2D:FA:F4:ED:88:2A:4A:B3:3B:9B:4E:DD:2A:8C:BA:41:0A:AB:22:04:17:EF:3D:57:61:85:C2:20:ED
Nom de l'algorithme de signature: SHA256withRSA
Algorithme de clé publique du sujet:Clé RSA 2048 bits
version: 3

Expansion:

#1: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 73 5F 60 D8 BC CB 03 98   F4 2B 17 34 2E 36 5A A6  s_`......+.4.6Z.
0010: 60 FF BC 1F                                        `...
]
]

#2: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:0
]

#3: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  Key_CertSign
  Crl_Sign
]

#4: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 2E 6A 0E 4B 59 85 4A 38   FE B2 75 0F C7 80 E0 4B  .j.KY.J8..u....K
0010: 74 A4 2C 56                                        t.,V
]
]



*******************************************
*******************************************


alias: rds_ap-northeast-1_2015
Date de création: 2020/01/22
Type d'entrée: trustedCertEntry

propriétaire: CN=Amazon RDS ap-northeast-1 CA, OU=Amazon RDS, O="Amazon Web Services, Inc.", L=Seattle, ST=Washington, C=US
Émetteur: CN=Amazon RDS Root CA, OU=Amazon RDS, O="Amazon Web Services, Inc.", L=Seattle, ST=Washington, C=US
Numéro de série: 44
Date de début de validité: Fri Feb 06 07:03:06 JST 2015 date de fin: Fri Mar 06 07:03:06 JST 2020
Empreinte digitale du certificat:
         MD5:  D0:F8:8E:C5:33:AF:FC:6B:76:92:0F:78:C4:BE:4A:CE
         SHA1: 4B:2D:8A:E0:C1:A3:A9:AF:A7:BB:65:0C:5A:16:8A:39:3C:03:F2:C5
         SHA256: DC:11:19:D5:45:F2:2A:CF:13:B6:6E:29:D9:3F:E8:AC:75:F6:9E:EC:CB:D3:AE:F3:CB:22:EC:A4:FD:77:17:F8
Nom de l'algorithme de signature: SHA1withRSA
Algorithme de clé publique du sujet:Clé RSA 2048 bits
version: 3

Expansion:

#1: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 4E 02 EE AC 3E F6 15 C8   4C ED 2C F5 05 C1 8F 9C  N...>...L.,.....
0010: 84 08 49 83                                        ..I.
]
]

#2: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:0
]

#3: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  Key_CertSign
  Crl_Sign
]

#4: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 88 8A 33 44 3A 9F 52 B8   12 62 F1 B3 76 57 C4 83  ..3D:.R..b..vW..
0010: 5B C0 4C 11                                        [.L.
]
]



*******************************************
*******************************************


alias: rds_root
Date de création: 2020/01/22
Type d'entrée: trustedCertEntry

propriétaire: CN=Amazon RDS Root 2019 CA, OU=Amazon RDS, O="Amazon Web Services, Inc.", ST=Washington, L=Seattle, C=US
Émetteur: CN=Amazon RDS Root 2019 CA, OU=Amazon RDS, O="Amazon Web Services, Inc.", ST=Washington, L=Seattle, C=US
Numéro de série: c73467369250ae75
Date de début de validité: Fri Aug 23 02:08:50 JST 2019 Date de fin: Fri Aug 23 02:08:50 JST 2024
Empreinte digitale du certificat:
         MD5:  66:EC:63:BB:25:C4:A5:34:82:C6:C0:18:2E:88:9F:0D
         SHA1: D4:0D:DB:29:E3:75:0D:FF:A6:71:C3:14:0B:BF:5F:47:8D:1C:80:96
         SHA256: F2:54:C7:D5:E9:23:B5:B7:51:0C:D7:9E:F7:77:7C:1C:A7:E6:4A:3C:97:22:E4:0D:64:54:78:FC:70:AA:D0:08
Nom de l'algorithme de signature: SHA256withRSA
Algorithme de clé publique du sujet:Clé RSA 2048 bits
version: 3

Expansion:

#1: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 73 5F 60 D8 BC CB 03 98   F4 2B 17 34 2E 36 5A A6  s_`......+.4.6Z.
0010: 60 FF BC 1F                                        `...
]
]

#2: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

#3: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  Key_CertSign
  Crl_Sign
]

#4: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 73 5F 60 D8 BC CB 03 98   F4 2B 17 34 2E 36 5A A6  s_`......+.4.6Z.
0010: 60 FF BC 1F                                        `...
]
]



*******************************************
*******************************************

keytool -v -list -keystore. / rds-shared-ca-bundle-2019.jks affichera une liste de certificats, alors assurez-vous que vous en avez quatre. Vous pouvez également vérifier la date de début et la date de fin de la période de validité.

3. Mettez à jour context.xml

Arrêtez Tomcat avant de mettre à jour.

Faites de trustCertificateKeyStoreUrl = file: /// etc / pki / java / rds-shared-ca-bundle.jks dans l'URL le nom du fichier jks créé.

context.xml


<Resource name="jdbc/honyaDB" auth="Container"
    type="javax.sql.DataSource"
    username="honya"
    password="honyapasswd"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://honya.ap-northeast-1.rds.amazonaws.com:3306/honyaDB?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=true&amp;requireSSL=true&amp;verifyServerCertificate=true&amp;trustCertificateKeyStoreUrl=file:///etc/pki/java/rds-combined-ca-bundle.jks&amp;trustCertificateKeyStoreType=JKS&amp;trustCertificateKeyStorePassword=password"
/>

épilogue

J'étais impatient car cela se reflétera au moment où j'enregistrerai context.xml: scream: (Parce qu'il s'agit d'un environnement de vérification, ce n'est pas le cas)

Si le certificat a le même nom de fichier, il n'est pas nécessaire de changer le context.xml, mais la gestion de l'ancien et du nouveau avec le même nom de fichier cause des problèmes, j'ai donc décidé de changer le nom du fichier.

Quand je l'ai essayé avec le certificat de version 2019 (rds-ca-2019-ap-Nordest-1.pem), cela n'a pas bien fonctionné: sweat_smile:

  1. N'utilisez pas la version fournie du certificat dans laquelle vous souhaitez installer le certificat ** dans la conversion de certificat. alert-2.gif Seul le premier sera installé. ** **

Veuillez vous référer à "Renouvellement du certificat SSL / TLS" car le côté serveur clique simplement sur la console aws.

référence

Mettez à jour votre application pour vous connecter à votre instance de base de données MariaDB avec un nouveau certificat SSL / TLS (https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/ssl-certificate-rotation- mariadb.html)

Chiffrement de la connexion à l'instance de base de données à l'aide de SSL / TLS

Renouvellement du certificat SSL / TLS

Recommended Posts

[Jusqu'au 5 mars 2020] Renouveler le certificat RDS pour java
Pour l'apprentissage JAVA (2018-03-16-01)
IDE 2017 pour Java
Java pour instruction
[Java] pour instruction, while instruction
[Java] Package de gestion
[Java] pour instruction / étendu pour instruction
Contre-mesures pour OutOfMemoryError en java
PNL pour Java (NLP4J) (2)
(Mémo) Java pour instruction
PNL pour Java (NLP4J) (1)