openssl ca: dyddiad dod i ben annilys yn index.txt, a sut i'w drwsio
Mae'r CA yn gwrthod cyhoeddi oherwydd na ellir dosrannu un llinell yn index.txt. Copïwch gyflwr y CA, dadgodiwch y cofnod, yna cysoniwch ef â'r dystysgrif lofnodedig.
Mae rhediad cyhoeddi yn stopio gyda entry 22: invalid expiry date, ac mae'r cais o'ch blaen yn berffaith iawn. Daw'r gŵyn o ddosrannydd cronfa ddata'r CA, nid o'r CSR ac nid o'r cleient VPN a fydd yn cyflwyno'r dystysgrif yn y pen draw. Mae'r gwahaniaeth hwnnw yn penderfynu popeth ar ôl hynny: mae cofnod wedi'i gamffurfio, felly mae'r atgyweiriad yn perthyn i gyflwr y CA yn hytrach nag i'r cais na chynffurf y cymar. Triniwch y cofnod rhifedig fel llinell yn index.txt, ac mae'r broblem yn crebachu i gwestiwn data cyfyngedig ag ateb y gellir ei wirio.
Darllenwch y gwall fel cwyn am y gronfa ddata
Mae pob openssl ca galwad yn cerdded ei chronfa ddata destun cyn llofnodi unrhyw beth. Mae pob llinell yn dal llythyren statws, stamp amser dod i ben, stamp amser dadgofnodol dewisol, rhif cyfresol mewn hecsadegol, enw ffeil a'r pwnc. Pan na ellir dosrannu un maes, mae'r gorchymyn yn adrodd rhif y llinell ac yn stopio yn lle dyfalu gweddill y cofnod.
Mae'r stop hwnnw'n amddiffynnol yn hytrach nag yn bedantig. Mae cofnod na all yr offeryn ei ddarllen yn ei adael heb allu penderfynu a yw'r pwnc a geisiwyd eisoes yn bodoli, a yw rhif cyfresol wedi'i roi, na beth ddylai'r CRL nesaf ei gynnwys. Byddai mynd heibio i linell ddrwg yn cynhyrchu'r union anghysondeb tawel hwnnw sy'n dod i'r wyneb fisoedd yn ddiweddarach, fel arfer yn ystod dadgofnod na all neb ei esbonio. Darllenwch y neges fel cwyn am y data, ac mae'r ymchwiliad yn aros o fewn cyfeiriadur y CA.
Copïwch gyflwr y CA cyn cyffwrdd â dim
Cymerwch snapshot o holl gyfeiriadur y CA, nid y ffeil gronfa ddata yn unig. Mae'r mynegai, ei ffeil priodoleddau, ffeiliau rhif cyfresol a rhif CRL, yr allwedd breifat a'r tystysgrifau a gyhoeddwyd i gyd yn cymryd rhan mewn gweithrediadau diweddarach, ac mae atgyweiriad sy'n adfer un tra'n colli'r lleill yn creu ail ddigwyddiad. Defnyddiwch drefn wrth gefn y CA ei hun lle bo un, ac oedwch y cyhoeddi ar amserlen am gyfnod y gwaith.
Cofnodwch fersiwn OpenSSL a'r ffeil ffurfweddu a lwythwyd gan y gorchymyn a fethodd. Mae gosodiadau'n aml yn cadw mwy nag un cyfeiriadur CA, ac mae'r gwall ond yn golygu rhywbeth yn erbyn y gronfa ddata a enwir gan y ffurfweddiad a ddewiswyd.
Dewch o hyd i'r cofnod a dadgodio ei faes dyddiad
Mae rhif y llinell a adroddwyd yn cyfrif o'r cofnod cyntaf, felly sed -n '22p' index.txt yn glanio ar y cofnod troseddol unwaith y byddwch wedi cadarnhau nad oes llinellau gwag na sylwadau uwch ei ben. Argraffwch y llinell honno â therfynyddion gweladwy, oherwydd mae tabiau a gofodau olrhain yn gyffredin ac yn anweledig mewn ffenestr golygydd cyffredin.
Mae'r maes dod i ben yn stamp amser y mae ei led yn dibynnu ar y flwyddyn. Mae gwerthoedd hyd at 2049 yn cael eu hysgrifennu yn UTCTime fel YYMMDDHHMMSSZ, tra bod gwerthoedd diweddarach yn troi i GeneralizedTime â blwyddyn pedwar digid. Mae cofnod sy'n cymysgu'r ddau ffurf, neu sy'n cario blwyddyn dau ddigid lle mae'r dosrannydd bellach yn disgwyl pedwar, yn methu yn union yn y fan hon. Felly hefyd maes wedi'i docio a adawyd gan ysgrifeniad wedi'i dorri.
Cymharwch y cofnod â'r dystysgrif y mae'n cyfeirio ati yn hytrach nag â ffeil CA arall. Y dystysgrif lofnodedig yw'r awdurdod ar yr hyn y dylai'r dilysrwydd ei ddweud, ac mae eisoes yn bodoli fel gwrthrych y gellir ei ddosrannu.
Atgyweiriwch y cofnod yn erbyn y dystysgrif lofnodedig
Darllenwch y dyddiadau go iawn gyda openssl x509 -in issued.pem -noout -dates -serial -subject. Trowch notAfter i led y stamp y mae eich build yn ei ysgrifennu ar gyfer y flwyddyn honno, a chadarnhewch fod y rhif cyfresol yn cyfateb i'r cofnod rydych ar fin ei olygu cyn i chi newid un nod.
Golygwch y maes toredig yn unig, cadwch y llythyren statws a'r rhif cyfresol, a gadewch weddill y llinell yn llonydd. Os na ellir cysoni'r cofnod ag unrhyw dystysgrif lofnodedig, triniwch ef fel cofnod crwydrol a'i ymddeol trwy lwybr dadgofnodi'r CA ei hun yn lle dileu'r llinell â llaw.
Peidiwch ag atgyweirio trwy docio dyddiad i ffitio dyfaliad am y flwyddyn. Nid yw toriad dau nod yn gludadwy rhwng buildau, ac mae'n newid yn dawel y dilysrwydd y mae'r gronfa ddata yn ei adrodd i wiriadau pwnc dyblyg a CRL yn y dyfodol. Pan na ellir adfer y gwerth gwreiddiol, ailgyhoeddwch o dan rif cyfresol newydd ac ysgrifennwch pam y gadawyd yr hen un. Mae'r trywydd archwilio yn rhan o'r atgyweiriad, nid papurau o'i gwmpas.
Gwiriwch gyhoeddi a chynhyrchu CRL cyn i chi gerdded i ffwrdd
Rhedwch un cyhoeddiad gyda'r un ffurfweddiad a chadarnhewch ei fod yn cwblhau heb gŵyn rhif llinell. Yna cynhyrchwch CRL gyda openssl ca -gencrl -config openssl.cnf a gwiriwch ei fod yn dosrannu, oherwydd mae cofnod wedi'i ddifrodi yn aml yn dod i'r wyneb yno yn hytrach nag yn ystod llofnodi.
Archwiliwch y dystysgrif newydd gyda openssl x509 -noout -dates -serial a'i chymharu â'r llinell y mae'r CA newydd ei hysgrifennu. Cadarnhewch fod y llythyren statws a'r dyddiad dod i ben yn cytuno â'r dystysgrif, a chadarnhewch fod openssl verify -CAfile ca.pem issued.pem yn dychwelyd heb wall. Yna adferwch y cyhoeddi ar amserlen a gwyliwch y rhediad cyntaf, oherwydd bydd ail linell gamffurfiedig yn cyhoeddi ei hun ar unwaith.