Cadwch eich CA gwraidd VPN all-lein a dal i gyhoeddi tystysgrifau
Cadwch yr allwedd wreiddiol oddi ar y rhwydwaith, llofnodwch ddail gyda CA canolraddol, cyhoeddwch CRL mewn pryd, a phrofwch y gadwyn cyn i'r cleient cyntaf gysylltu.
Mae eich VPN yn ateb cysylltiadau am 3 y bore tra bod y peiriant sy'n llofnodi ei dystysgrifau yn segur, wedi'i ddiffodd mewn drôr. Nid yw cleient sy'n dilysu tystysgrif y gweinydd byth yn cysylltu â'ch CA, felly nid oes angen i'r CA fod yn gyrraeddadwy ar gyfer unrhyw gysylltiad. Y rhan sydd angen cynllunio yw y diwrnod y mae'n rhaid cyhoeddi, adnewyddu neu ddiddymu tystysgrif tra bo'r allwedd wreiddiol yn aros dan glo.
Beth mae cysylltiad yn ei ddilysu mewn gwirionedd
Pan fydd cleient OpenVPN yn cysylltu, mae'n cerdded y gadwyn llofnodion o ddalen y gweinydd i fyny at dystysgrif CA y mae eisoes yn ymddiried ynddi, yn gwirio'r ffenestr ddilysrwydd ac, os yw'r proffil yn dweud hynny, yn ymgynghori â rhestr ddiddymu. Nid yw byth yn chwilio am eich CA gwraidd. Mae'r gweinydd yn gwneud y delwedd drych ar gyfer tystysgrifau cleient. Ar adeg cysylltu, dim ond y ddalen, y canolraddol a'r bwndel ymddiriedaeth a ddosbarthwyd gennych yn gynharach sydd yn bresennol.
Yr hyn sy'n methu mewn gwirionedd yw un o dri pheth: nid yw'r allwedd lofnodi ar gael adeg cyhoeddi, mae rhestr ddiddymu wedi mynd yn hen, neu mae bwndel ymddiriedaeth y cleient yn hŷn na'r gadwyn y mae'r gweinydd yn ei chyflwyno. Problem broses yw'r gyntaf; problemau dosbarthu yw'r ddwy arall. Nid oes yr un ohonynt yn gofyn i'r allwedd wreiddiol fod ar-lein, a dim ond symud yr awdurdod llofnodi i'r darparwr y mae gwasanaeth VPN a reolir sy'n mynnu tystysgrif breifat ar gyfer dilysu'r tiwnel. Mae Azure pwynt-i-safle yn gweithio'r ffordd arall: rydych yn uwchlwytho tystysgrif wreiddiol ac mae tystysgrifau a lofnodir oddi tani yn cael eu hymddiried, felly gofynnwch pwy sy'n llofnodi, pwy sy'n dilysu a sut y tynnir tystysgrif yn ôl yn gynnar.
Adeiladwch y gwraidd ar westeiwr nad yw byth yn cael cyfeiriad
Defnyddir gwraidd all-lein yn anaml: i lofnodi tystysgrif y CA canolraddol, ac yn ddiweddarach i'w hadnewyddu neu i'w diddymu. Mae popeth arall yn digwydd un lefel i lawr. Gwnewch waith y gwraidd ar beiriant a gedwir oddi ar y rhwydwaith, o system fyw os yn bosibl, a chofnodwch pwy oedd yn y stafell. Mae'r gorchmynion yn tybio OpenSSL 1.1.1 neu'n hŷn, oherwydd nad yw -addext ar gael mewn adeilediadau hŷn.
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out root.key
openssl req -x509 -new -key root.key -sha256 -days 7300 \
-subj "/CN=Example VPN Root CA" -out root.crt \
-addext "basicConstraints=critical,CA:TRUE" \
-addext "keyUsage=critical,keyCertSign,cRLSign"
Crëwch y canolraddol ar westeiwr llofnodi a chludwch ei gais yn unig i'r peiriant all-lein. Mae'r gwraidd yn llofnodi'r cais hwnnw gyda hyd llwybr sero, felly gall y CA canolraddol lofnodi tystysgrifau pen-i-ben ond ni chaiff greu CA arall oddi tano. Mae'r un estyniad yn atal gwesteiwr llofnodi sydd wedi'i gyfaddawdu rhag bathu awdurdod sy'n gyfwerth â'r gwraidd. Defnyddiwch ECDSA yn unig os yw pob cleient yn rhedeg OpenVPN 2.4 neu'n hŷn; fel arall, cynhyrchwch allweddi RSA a chadwch y llif yn union yr un fath.
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out intermediate.key
openssl req -new -key intermediate.key -subj "/CN=Example VPN Intermediate CA" -out intermediate.csr
openssl x509 -req -in intermediate.csr -CA root.crt -CAkey root.key \
-CAcreateserial -days 3650 -sha256 -extfile intermediate.ext -out intermediate.crt
intermediate.ext sy'n dal basicConstraints=critical,CA:TRUE,pathlen:0, keyUsage=critical,keyCertSign,cRLSign a authorityKeyIdentifier=keyid:always. Dychwelwch yr allwedd wreiddiol i'w chist cyn i westeiwr llofnodi gael ei ailgysylltu. Os oes rhaid i'r gwraidd allu diddymu'r canolraddol, llofnodwch ef gyda openssl ca -config root.cnf -extensions intermediate_ca yn erbyn index.txt ar lefel gwraidd yn lle openssl x509 -req, fel bod y rhif cyfresol yn cael ei gofnodi; yna anfonwch y rhestr wreiddiol sy'n deillio ohoni y tu mewn i broffil y cleient, lle mae crl-verify sy'n seiliedig ar ffeil yn ei darllen wrth gychwyn. Anfonwch fwndel gyda'r ddwy dystysgrif CA at gleientiaid; ni fydd dalen yn unig yn dilysu yn erbyn y gwraidd.
Cyhoeddwch ddail o'r canolraddol, gyda chronfa ddata
Mae llofnodi gyda openssl x509 -req yn gweithio nes bod angen diddymu arnoch, oherwydd nid oes dim yn cofnodi'r rhif cyfresol. Defnyddiwch openssl ca o'r dystysgrif gyntaf fel bod rhif cyfresol, dyddiad dod i ben a chyflwr diddymu yn byw mewn un gronfa ddata. Crëwch ffeiliau'r gronfa ddata unwaith, yna cyfeiriwch y ffurfwedd atynt:
mkdir -p /etc/vpn-ca/intermediate/newcerts
touch /etc/vpn-ca/intermediate/index.txt
echo 1000 > /etc/vpn-ca/intermediate/serial
echo 1000 > /etc/vpn-ca/intermediate/crlnumber
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = /etc/vpn-ca/intermediate
database = $dir/index.txt
new_certs_dir = $dir/newcerts
serial = $dir/serial
crlnumber = $dir/crlnumber
certificate = $dir/intermediate.crt
private_key = $dir/intermediate.key
default_md = sha256
default_days = 365
default_crl_days = 30
unique_subject = no
policy = policy_any
[ policy_any ]
commonName = supplied
[ server_cert ]
basicConstraints = CA:FALSE
keyUsage = critical, digitalSignature
extendedKeyUsage = serverAuth
subjectAltName = @server_names
[ client_cert ]
basicConstraints = CA:FALSE
keyUsage = critical, digitalSignature
extendedKeyUsage = clientAuth
[ server_names ]
DNS.1 = vpn.example.com
Mae'r llinell defnydd allwedd yn tybio allwedd ECDSA; ychwanegwch keyEncipherment ar gyfer RSA. Rhowch enw cyffredin ei hun i bob cleient, oherwydd OpenVPN mae'n adnabod cysylltiad wrth y maes hwnnw, ac ni ellir gwahaniaethu dau liniadur sy'n rhannu CN=vpn-client mewn logiau, mewn rheolau client-config-dir nac mewn unrhyw wthiad ar gyfer defnyddiwr, ac rydych yn colli'r priodoliad sy'n gwneud penderfyniad diddymu yn amddiffynadwy. Cyhoeddwch a dilyswch ddalen fel hyn:
openssl req -new -key alice.key -subj "/CN=alice-laptop" -out alice.csr
openssl ca -config intermediate.cnf -extensions client_cert -in alice.csr -out alice.crt -batch
openssl verify -CAfile ca-bundle.crt -untrusted intermediate.crt alice.crt
Cadwch yr allwedd lofnodi y tu ôl i ffin polisi yn lle ei chopïo i westeiwr y VPN: gwasanaeth bach sy'n dilysu'r cais, yn gwirio'r enw cyffredin yn erbyn rhestr a ganiateir ac yn dychwelyd y dystysgrif yn unig. Cofnodwch bob rhif cyfresol; y log yw'r unig gyswllt rhwng tystysgrif a'r person a ofynnodd amdani.
Cyhoeddwch ddiddymu heb ddeffro'r gwraidd
Mae tystysgrifau cleient yn cael eu diddymu gan y canolraddol, byth gan y gwraidd. Dim ond pan fydd canolraddol wedi'i losgi y mae'r rhestr wreiddiol yn bwysig. Cyfeiriwch y gweinydd at y rhestr ganolraddol gyda crl-verify. Mae CRL sy'n seiliedig ar ffeil yn cael ei lwytho wrth gychwyn y gwasanaeth, felly ail-lwythwch ar ôl pob adfywio; mae'r ffurf cyfeiriadur yn darllen cyflwr ar adeg cysylltu ac yn costio un ffeil fesul rhif cyfresol.
Diddymwch ac adfywch gyda dwy orchymyn o'r un gronfa ddata:
openssl ca -config intermediate.cnf -revoke /etc/vpn-ca/intermediate/newcerts/1001.pem
openssl ca -config intermediate.cnf -gencrl -out /etc/openvpn/crl.pem
Yna gwyliwch y cloc. Mae CRL yn cario maes nesaf-i'w-ddiweddaru, a phan fydd y dyddiad hwnnw wedi mynd heibio, mae cymar sy'n dilysu yn gwrthod y rhestr yn lle ei hanwybyddu. Mae adfywio'n fisol gyda default_crl_days = 30 yn gadael rhywfaint o le; nid yw adfywio'n flynyddol yn gwneud hynny. Mae oesau dalen byrrach yn rheolaeth fwy dibynadwy, oherwydd dim ond lle y caiff y rhestr ei hystyried y mae diddymu'n berthnasol.
Profwch y gadwyn, yna ysgrifennwch y seremoni i lawr
Atgynhyrchwch bedair methiant cyn ymddiried yn y dyluniad. Dilyswch y gadwyn gyda openssl verify -CAfile ca-bundle.crt -untrusted intermediate.crt server.crt. Cysylltwch â thystysgrif cleient sydd wedi dod i ben a chadarnhewch fod y gweinydd yn ei gwrthod. Diddymwch gleient prawf, ail-lwythwch a chadarnhewch fod y rhestr yn dod i rym. Symudwch gloc gwesteiwr un diwrnod ymlaen, oherwydd gall cloc anghywir gyhoeddi a gwrthod tystysgrifau sy'n edrych yn ddilys mewn mannau eraill.
Dim ond os yw'r papurau ar gael y mae gwraidd all-lein yn rheolaeth: dau berson a enwir ar gyfer y seremoni, cofnod o bob rhif cyfresol a lofnodwyd, copi wrth gefn wedi'i amgryptio a gedwir ar wahân i'r peiriant, a phrawf adfer ar westeiwr ynysig. Llofnodwch ganolraddol sbâr yn ystod yr un seremoni fel nad yw gwesteiwr llofnodi marw yn eich gorfodi i ddatgloi'r gwraidd hanner nos.
Cyn i chi alw hyn yn orffenedig, cadarnhewch bump o bethau: nid yw'r allwedd wreiddiol ar westeiwr sy'n gysylltiedig â'r rhwydwaith, dim ond ar westeiwr llofnodi y mae'r allwedd ganolraddol yn byw, mae bwndel y cleient yn cario'r ddwy dystysgrif CA, mae gan y CRL nesaf-i'w-ddiweddaru yn y dyfodol, ac mae gan rywun gofnod calendr ar gyfer pob dod-i-ben yn y gadwyn. Os oes un ar goll, dim ond heb ei ddogfennu yw'r ffurfweddiad sy'n edrych yn all-lein.