Creez o comunicare SSL între un server pg DB și un client nod. După ce au urmat câteva documente și au fost implementate cu openssl, nodul reclama „certificat autosemnat în lanțul de certificate”. Adăugarea de certificat la magazinul de certificate din Windows nu ajută.
openssl pentru DB Server bazat pe pg doc:
openssl req -new -x509 -days 3650 -nodes -text -out serverdb.crt -keyout serverdb.key -subj "/CN=localhost"
Generarea unei chei private RSA
scrierea unei noi chei private la „serverdb.key”
openssl req -new -nodes -text -out rootdb.csr -keyout rootdb.key -subj "/CN=localhost"
Generarea unei chei private RSA
scrierea unei noi chei private la „rootdb.key”
openssl x509 -req -in rootdb.csr -text -days 3650 -extfile cnf\openssl.cnf -extensions v3_ca -signkey rootdb.key -out rootdb.crt
Semnătura ok
subiect=CN = localhost
Obținerea cheii private
openssl req -new -nodes -text -out serverdb.csr -keyout serverdb.key -subj "/CN=localhot"
Generarea unei chei private RSA
scrierea unei noi chei private la „serverdb.key”
openssl x509 -req -in serverdb.csr -text -days 3650 -CA rootdb.crt -CAkey rootdb.key -CAcreateserial -out serverdb.crt
Semnătura ok
subiect=CN = localhot
Obținerea cheii private CA
openssl pentru clientul nod:
openssl genrsa -des3 -out clientToDB.key 2048
Se generează cheia privată RSA, modul lung de 2048 biți (2 prime)
//rem elimină fraza de acces
openssl rsa -in clientToDB.key -out clientToDB.key
scrierea cheii RSA
//rem 2.8 Creați certificatul postgresql.crt.
openssl req -new -key clientToDB.key -out clientToDB.csr
...
Nume comun (de exemplu, FQDN server sau numele DVS.) []:localhost
Vă rugăm să introduceți următoarele atribute „extra”.
să fie trimis împreună cu cererea dumneavoastră de certificat
O parolă de provocare []:
Un nume de companie opțional []:
//rem 2.9 Semnează-l folosind certificatul rădăcină de încredere:
openssl x509 -req -in clientToDB.csr -CA rootdb.crt -CAkey rootdb.key -out clientToDB.crt -CAcreateserial
Semnătura ok
Obținerea cheii private CA
postgresql.conf
ssl = pornit
ssl_cert_file = 'serverdb.crt'
ssl_key_file = 'serverdb.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL'
ssl_prefer_server_ciphers = activat
ssl_ca_file = 'rootdb.crt'
ssl_crl_file = ''
setarea nodului ssl:
ssl:
{
rejectUnauthorized: adevărat, // lucrări false
ca: fs.readFileSync("serverdb.crt").toString(),
cheie: fs.readFileSync("clientToDB.key").toString(),
cert: fs.readFileSync("clientToDB.crt").toString()
}
Mediul este
Windows 10, pg și nodul ambele locale, localhost
openssl v1.1.1k
nodul v14
nici un firewall al companiei