Puncte:1

„certificat autosemnat în lanțul de certificate”, server sau client?

drapel cn

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
Steffen Ullrich avatar
drapel se
`ca: fs.readFileSync("serverdb.crt").toString(),` - CA rădăcină a site-ului serverului este rootdb.crt, nu serverdb.crt. În afară de asta, comenzile tale sunt confuze, deoarece creați mai întâi serverdb.* în prima comandă și apoi pur și simplu îl suprascrieți în comenzile următoare.
Jeb50 avatar
drapel cn
Comenzile @SteffenUllrich se bazează pe [documentul pg](https://www.postgresql.org/docs/13/ssl-tcp.html#SSL-CERTIFICATE-CREATION). După înlocuirea `serverdb.crt` cu `rootdb.crt`, a primit `code:'DEPTH_ZERO_SELF_SIGNED_CERT' mesaj: „certificat autosemnat”.
Steffen Ullrich avatar
drapel se
*„Comenzile se bazează pe documentul pg.”* - amestecați comenzi din documentație care nu ar trebui să fie amestecate. Documentează două moduri: certificate autosemnate și certificate emise de CA, iar unul ar trebui să fie utilizat într-un singur mod. De asemenea, explică când ce ar trebui să fie folosit. Vă rugăm să citiți documentația mai detaliat.
Jeb50 avatar
drapel cn
@SteffenUllrich Apreciez îndrumarea.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.