VPN ਕੁੰਜੀ ਫਾਈਲ ਵਿੱਚ RSA ਦੇ n, e, d, p ਅਤੇ q ਕਿੱਥੇ ਰਹਿੰਦੇ ਹਨ
n, e, d, p ਅਤੇ q ਇੱਕੋ ਢਾਂਚੇ ਦੇ ਅੰਦਰ ਹਨ, ਫਾਈਲ ਨਾਵਾਂ ਵਿੱਚ ਨਹੀਂ। OpenSSL ਨਾਲ RSA VPN ਕੁੰਜੀ ਪੜ੍ਹੋ ਅਤੇ ਭੇਦ ਛਾਪੇ ਬਿਨਾਂ ਇਸਨੂੰ ਇਸਦੇ ਸਰਟੀਫਿਕੇਟ ਨਾਲ ਜੋੜੋ।
RSA ਦੀ ਵਿਆਖਿਆ ਵਿੱਚ ਅੱਖਰ ਇੱਕੋ ਵਸਤੂ ਦੇ ਅੰਦਰਲੇ ਖੇਤਰਾਂ ਦੇ ਨਾਮ ਹਨ, PKI ਔਜ਼ਾਰ ਵੱਲੋਂ ਦਿੱਤੀਆਂ ਫਾਈਲਾਂ ਦੇ ਨਹੀਂ। ਨਿੱਜੀ ਕੁੰਜੀ ਫਾਈਲ ਇੱਕ ਢਾਂਚਾ ਰੱਖਦੀ ਹੈ ਜਿਸਦੇ ਪਹਿਲੇ ਖੇਤਰ ਜਨਤਕ ਹਨ ਅਤੇ ਬਾਅਦ ਵਾਲੇ ਖੇਤਰ ਉਸ ਮਸ਼ੀਨ ਤੋਂ ਕਦੇ ਬਾਹਰ ਨਹੀਂ ਜਾਣੇ ਚਾਹੀਦੇ ਜੋ ਸੁਰੰਗ ਖਤਮ ਕਰਦੀ ਹੈ। ਇਹਨਾਂ ਦੋ ਤੱਥਾਂ ਵਿਚਕਾਰ ਕਿਹੜੀ ਫਾਈਲ ਕਿਹੜੇ ਸਵਾਲ ਦਾ ਜਵਾਬ ਦਿੰਦੀ ਹੈ ਬਾਰੇ ਬਹੁਤੇ ਵਿਹਾਰਕ ਸਵਾਲ ਹਨ। ਇਹ ਪੁਸਤਿਕਾ ਪਹਿਲਾਂ ਢਾਂਚਾ ਪੜ੍ਹਦੀ ਹੈ, ਫਿਰ ਉਹ ਹੁਕਮ ਜੋ ਇਸਨੂੰ ਡੋਲ੍ਹੇ ਬਿਨਾਂ ਜਾਂਚਦੇ ਹਨ।
ਭਾਜ ਸੰਖਿਆਵਾਂ ਲੱਭਣ ਤੋਂ ਪਹਿਲਾਂ ਪੱਕਾ ਕਰੋ ਕਿ ਕੁੰਜੀ RSA ਹੈ
ਸਰਟੀਫਿਕੇਟ ਸਾਬਤ ਕਰਦਾ ਹੈ ਕਿ ਕੋਈ ਕੁੰਜੀ ਮੌਜੂਦ ਹੈ ਅਤੇ ਉਸ ਉੱਤੇ ਦਸਤਖਤ ਹੋਏ ਹਨ; ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰਦਾ ਕਿ ਕੁੰਜੀ RSA ਹੈ। ਸਿਸਟਮ ਅੰਡਾਕਾਰ ਵਕਰਾਂ ਜਾਂ Ed25519 ਉੱਤੇ ਬਣਾਏ ਜਾ ਸਕਦੇ ਹਨ, ਅਤੇ ਉਹੀ ਡਾਇਰੈਕਟਰੀ ਬਣਤਰ ਸਭਨਾਂ ਦੀ ਸੇਵਾ ਕਰਦੀ ਹੈ। ਉਹ ਭਾਜ ਗੁਣਨਖੰਡ ਲੱਭਣ ਤੋਂ ਪਹਿਲਾਂ ਅਲਗੋਰਿਦਮ ਜਾਂਚੋ ਜੋ ਕਦੇ ਸਨ ਹੀ ਨਹੀਂ।
ਇਹ ਤਿੰਨ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਵਾਲੇ ਹੁਕਮ ਸਵਾਲ ਦਾ ਜਵਾਬ ਦਿੰਦੇ ਹਨ ਅਤੇ ਔਜ਼ਾਰ ਦਾ ਸੰਸਕਰਣ ਦਰਜ ਕਰਦੇ ਹਨ।
openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text
ਸੰਸਕਰਣ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿਉਂਕਿ ਵਿਕਲਪਾਂ ਦੇ ਨਾਮ ਪ੍ਰਮੁੱਖ ਸੰਸਕਰਣਾਂ ਵਿਚਕਾਰ ਖਿਸਕੇ ਹਨ। ਸਰਟੀਫਿਕੇਟ ਦੇ ਆਉਟਪੁੱਟ ਵਿੱਚ ਜਨਤਕ ਕੁੰਜੀ ਅਲਗੋਰਿਦਮ ਦੀ ਲਾਈਨ ਅਤੇ ਕੁੰਜੀ ਦਾ ਆਕਾਰ ਲੱਭੋ; ਕੁੰਜੀ ਦੇ ਆਉਟਪੁੱਟ ਵਿੱਚ RSA ਕੁੰਜੀ ਇੱਕ ਮਾਡਿਊਲਸ ਅਤੇ ਜਨਤਕ ਘਾਤ ਛਾਪਦੀ ਹੈ। ਅੰਡਾਕਾਰ ਵਕਰ ਦੀ ਕੁੰਜੀ ਇਸਦੀ ਥਾਂ ਨਾਮ ਵਾਲਾ ਵਕਰ ਛਾਪਦੀ ਹੈ, ਅਤੇ ਕੋਈ ਵੀ ਖੋਜ ਇਸ ਵਿੱਚੋਂ n ਜਾਂ q ਨਹੀਂ ਦੇਵੇਗੀ।
base64 ਦੀ ਥਾਂ ਢਾਂਚਾ ਪੜ੍ਹੋ
PEM ਹੈਡਰ ਲਾਈਨਾਂ ਵਿੱਚ ਲਿਪਟਿਆ base64 ਹੈ, ਅਤੇ ਇਸਨੂੰ ਡੀਕੋਡ ਕਰਨ ਨਾਲ DER ਮਿਲਦਾ ਹੈ, ਭਾਵ ਵੱਡਾ ਪੂਰਨ ਅੰਕ ਨਹੀਂ, ਕ੍ਰਮਬੱਧ ਢਾਂਚਾ। RSA ਨਿੱਜੀ ਕੁੰਜੀਆਂ ਦੋ ਆਮ ਕੰਟੇਨਰਾਂ ਵਿੱਚ ਸਫ਼ਰ ਕਰਦੀਆਂ ਹਨ, PKCS#1 ਅਤੇ PKCS#8, ਅਤੇ ਦੋਵੇਂ ਇੱਕੋ ਸੰਖਿਆਵਾਂ ਦੇ ਸਮੂਹ ਵਿੱਚ ਆਉਂਦੀਆਂ ਹਨ।
ਦੋ ਭਾਜ ਸੰਖਿਆਵਾਂ ਦੇ ਮਾਮਲੇ ਵਿੱਚ ਨਿੱਜੀ ਢਾਂਚਾ ਨੌਂ ਖੇਤਰ ਰੱਖਦਾ ਹੈ: ਸੰਸਕਰਣ, ਮਾਡਿਊਲਸ n, ਜਨਤਕ ਘਾਤ e, ਨਿੱਜੀ ਘਾਤ d, ਭਾਜ ਸੰਖਿਆਵਾਂ p ਅਤੇ q, ਦੋ CRT ਘਾਤ ਅਤੇ ਇੱਕ CRT ਗੁਣਾਂਕ। RFC 8017 ਭਾਗ A.1 ਉਹਨਾਂ ਹਿੱਸਿਆਂ ਅਤੇ ASN.1 ਬਣਤਰ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਅਤੇ ਦੋ ਤੋਂ ਵੱਧ ਭਾਜ ਸੰਖਿਆਵਾਂ ਦੀ ਵੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਇਸ ਲਈ ਇੱਕ ਆਮ ਪਾਰਸਰ ਵਾਧੂ ਭਾਜ ਐਂਟਰੀਆਂ ਛਾਪ ਸਕਦਾ ਹੈ। ਕ੍ਰਮ ਉੱਤੇ ਧਿਆਨ ਦਿਓ, ਕਿਉਂਕਿ ਇਹ ਇੱਕ ਆਮ ਗਲਤੀ ਸਮਝਾਉਂਦਾ ਹੈ: ਜਨਤਕ ਅੱਧਾ ਹਿੱਸਾ ਨਿੱਜੀ ਫਾਈਲ ਦੇ ਅੰਦਰ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ, ਇਸ ਲਈ ਜਨਤਕ ਖੇਤਰ ਦੀ ਮੌਜੂਦਗੀ ਉਸ ਫਾਈਲ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਲਈ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਬਣਾਉਂਦੀ। ਇਸ ਤੋਂ ਬਾਅਦ ਸਭ ਕੁਝ ਉਹ ਸਮੱਗਰੀ ਹੈ ਜੋ ਹੋਸਟ ਉੱਤੇ ਹੀ ਰਹਿਣੀ ਚਾਹੀਦੀ ਹੈ।
ਇੰਕੋਡਿੰਗ ਇੱਕ ਪਰਤ ਜੋੜਦੀ ਹੈ ਜਿਸਨੂੰ ਸਮੱਗਰੀ ਨਾਲ ਉਲਝਾਉਣਾ ਸੌਖਾ ਹੈ। openssl asn1parse ਢਾਂਚੇ ਨੂੰ ਰੁੱਖ ਵਾਂਗ ਖਿੱਚਦਾ ਹੈ ਤਾਂ ਜੋ ਖੇਤਰਾਂ ਦਾ ਕ੍ਰਮ ਦਿਸੇ, ਅਤੇ ਇਹ ਕੁਝ ਵੀ ਡੀਕ੍ਰਿਪਟ ਨਹੀਂ ਕਰਦਾ ਅਤੇ ਇਹ ਵੀ ਨਹੀਂ ਦੱਸਦਾ ਕਿ ਕੁੰਜੀ ਵਰਤੋਂਯੋਗ ਹੈ ਜਾਂ ਨਹੀਂ।
ਕੁੰਜੀ ਛਾਪੇ ਬਿਨਾਂ ਸਰਟੀਫਿਕੇਟ ਨੂੰ ਕੁੰਜੀ ਨਾਲ ਜੋੜੋ
ਅਗਲਾ ਸਵਾਲ ਆਮ ਤੌਰ ਉੱਤੇ ਇਹ ਹੁੰਦਾ ਹੈ ਕਿ ਸਰਟੀਫਿਕੇਟ ਅਤੇ ਕੁੰਜੀ ਇਕੱਠੇ ਹਨ ਜਾਂ ਨਹੀਂ। ਮਾਡਿਊਲਸ ਦੀ ਤੁਲਨਾ ਇਸਦਾ ਜਵਾਬ ਦਿੰਦੀ ਹੈ, ਪਰ ਇਹ ਨਿੱਜੀ ਦੇ ਨੇੜਲੀ ਸਮੱਗਰੀ ਟਰਮੀਨਲ ਰਿਕਾਰਡ ਵਿੱਚ ਵੀ ਕਾਪੀ ਕਰਦੀ ਹੈ ਜੋ ਟਿਕਟ ਵਿੱਚ ਪਹੁੰਚ ਸਕਦੀ ਹੈ। ਜਨਤਕ ਅੱਧਾਂ ਦੀ ਤੁਲਨਾ ਉਸੇ ਸਵਾਲ ਦਾ ਜਵਾਬ ਸਕ੍ਰੀਨ ਉੱਤੇ ਕੁਝ ਵੀ ਸੰਵੇਦਨਸ਼ੀਲ ਰੱਖੇ ਬਿਨਾਂ ਦਿੰਦੀ ਹੈ।
openssl pkey -in vpn-client.key -pubout -out /tmp/key.pub
openssl x509 -in vpn-client.crt -pubkey -noout > /tmp/cert.pub
cmp /tmp/key.pub /tmp/cert.pub && echo MATCH
ਇੱਕੋ ਜਿਹੀਆਂ ਫਾਈਲਾਂ ਦਾ ਅਰਥ ਹੈ ਕਿ ਸਰਟੀਫਿਕੇਟ ਉਸ ਕੁੰਜੀ ਦਾ ਜਨਤਕ ਅੱਧਾ ਹਿੱਸਾ ਰੱਖਦਾ ਹੈ, ਅਤੇ ਫ਼ਰਕ ਦਾ ਅਰਥ ਹੈ ਕਿ ਤੁਸੀਂ ਗਲਤ ਜੋੜੀ ਫੜੀ ਹੋਈ ਹੈ। ਇਹੀ ਬੇਮੇਲ ਉਸ ਸੁਰੰਗ ਦਾ ਸਭ ਤੋਂ ਆਮ ਕਾਰਨ ਹੈ ਜੋ ਖੁਸ਼ੀ ਨਾਲ ਗੱਲਬਾਤ ਕਰਦੀ ਹੈ ਅਤੇ ਫਿਰ ਪ੍ਰਮਾਣਿਕਤਾ ਤੋਂ ਇਨਕਾਰ ਕਰਦੀ ਹੈ। ਫਿਰ ਦੋ ਅਸਥਾਈ ਫਾਈਲਾਂ ਹਟਾ ਦਿਓ; ਉਹਨਾਂ ਵਿੱਚ ਕੁਝ ਵੀ ਭੇਦ ਨਹੀਂ, ਪਰ ਘਟਨਾ ਦੇ ਵਿਚਕਾਰ ਸਾਫ਼ ਕੰਮ ਵਾਲੀ ਡਾਇਰੈਕਟਰੀ ਬਾਰੇ ਸੋਚਣਾ ਸੌਖਾ ਹੈ।
ਗੁਆਂਢੀ ਫਾਈਲਾਂ ਕੀ ਨਹੀਂ ਹਨ, ਇਹ ਜਾਣੋ
ਸਰਟੀਫਿਕੇਟ ਉਹ ਇੰਕ੍ਰਿਪਟਿਡ ਜਨਤਕ ਕੁੰਜੀ ਨਹੀਂ ਜੋ ਸਾਮ੍ਹਣੇ ਵਾਲਾ ਧਿਰ CA ਸਰਟੀਫਿਕੇਟ ਨਾਲ ਖੋਲ੍ਹਦਾ ਹੈ; ਇਹ ਜਨਤਕ ਕੁੰਜੀ ਅਤੇ ਪਛਾਣ ਡੇਟਾ ਵਿਚਕਾਰ ਦਸਤਖਤ ਵਾਲਾ ਬੰਧਨ ਹੈ। CA ਦੀ ਨਿੱਜੀ ਦਸਤਖਤ ਕੁੰਜੀ ਆਪਣੇ ਹੀ ਸਰਟੀਫਿਕੇਟ ਅਤੇ ਹਰ ਕਲਾਇੰਟ ਕੁੰਜੀ ਤੋਂ ਵੱਖ ਰਹਿੰਦੀ ਹੈ। ਬੇਨਤੀ ਵੀ ਸਰਟੀਫਿਕੇਟ ਨਹੀਂ: ਇਹ ਮੰਗੀ ਜਾਣਕਾਰੀ ਅਤੇ ਜਨਤਕ ਕੁੰਜੀ ਬੇਨਤੀ ਉੱਤੇ ਦਸਤਖਤ ਸਮੇਤ ਰੱਖਦੀ ਹੈ, ਜੋ ਇਸਨੂੰ ਦਾਖਲਾ ਇਨਪੁਟ ਬਣਾਉਂਦਾ ਹੈ, ਹੱਕ ਦਾ ਸਬੂਤ ਨਹੀਂ।
| File | Answers | Does not prove |
|---|---|---|
| vpn-client.key | Possession of the private key | That the identity is enrolled |
| vpn-client.crt | A signed binding of public key to identity | That the client holds the matching key |
| vpn-client.csr | The requested binding and public key | That access was granted |
| dh2048.pem | Group parameters for key exchange | Any RSA component |
| crl.pem | Revocation status for certificates | Anything about a private key |
ਉਹਨਾਂ ਐਂਟਰੀਆਂ ਵਿੱਚੋਂ ਦੋ RSA ਪੈਰਾਮੀਟਰਾਂ ਨਾਲ ਇੰਨੀ ਵਾਰ ਉਲਝਦੀਆਂ ਹਨ ਕਿ ਦੋ ਵਾਰ ਨਾਮ ਦੇਣਾ ਪੈਂਦਾ ਹੈ। Diffie-Hellman ਪੈਰਾਮੀਟਰ ਫਾਈਲ ਕੁੰਜੀ ਸਥਾਪਨਾ ਲਈ ਸਮੂਹ ਪੈਰਾਮੀਟਰ ਰੱਖਦੀ ਹੈ ਅਤੇ ਕੋਈ RSA ਭਾਜ ਸੰਖਿਆ ਨਹੀਂ, ਭਾਵੇਂ ਇਹ ਵੀ ਵੱਡੀ ਭਾਜ ਸੰਖਿਆ ਵਜੋਂ ਛਪਦੀ ਹੈ। ਰੱਦ ਕਰਨ ਦੀ ਸੂਚੀ ਸਰਟੀਫਿਕੇਟਾਂ ਦੀ ਸਥਿਤੀ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਦੀ ਹੈ ਅਤੇ ਉਹ ਥਾਂ ਨਹੀਂ ਜਿੱਥੇ ਨਿੱਜੀ ਘਾਤ ਲੁਕ ਸਕੇ।
ਇਸ ਲਈ ਹਰ ਸੂਚੀ ਲਾਈਨ ਨੂੰ ਚਾਰ ਚੀਜ਼ਾਂ ਦਰਜ ਕਰਨੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ: ਵਸਤੂ ਦੀ ਕਿਸਮ, ਮਾਲਕ, ਮਕਸਦ ਅਤੇ ਕੀ ਨਿੱਜੀ ਸਮੱਗਰੀ ਸ਼ਾਮਲ ਹੈ। ਆਖਰੀ ਕਾਲਮ ਤੈਅ ਕਰਦਾ ਹੈ ਕਿ ਫਾਈਲ ਕਿੱਥੇ ਕਾਪੀ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਅਤੇ ਲੋਕ ਉਹੀ ਛੱਡ ਦਿੰਦੇ ਹਨ।
ਜੋੜੀ ਦਰਜ ਕਰੋ, ਫਿਰ ਹੈਂਡਸ਼ੇਕ ਪਰਖੋ
ਕੁਝ ਵੀ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਜਾਂਚ ਦਾ ਆਉਟਪੁੱਟ ਤਾਰੀਖ ਅਤੇ OpenSSL ਸੰਸਕਰਣ ਸਮੇਤ ਸੰਭਾਲੋ। ਫਿਰ ਬਾਅਦ ਦਾ ਘੁਮਾਅ ਯਾਦਦਾਸ਼ਤ ਦੀ ਥਾਂ ਸਬੂਤ ਨਾਲ ਤੁਲਨਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates
ਜਨਤਕ ਕੁੰਜੀ ਦੀ ਤੁਲਨਾ ਤੋਂ ਬਾਅਦ ਉਹ ਰਾਹ ਵਰਤੋ ਜੋ ਜੋੜੀ ਖਪਤ ਕਰਦਾ ਹੈ: ਸੁਰੰਗ ਉੱਪਰ ਚੁੱਕੋ, ਪੱਕਾ ਕਰੋ ਕਿ ਸਰਟੀਫਿਕੇਟ ਪੇਸ਼ ਹੁੰਦਾ ਅਤੇ ਸਵੀਕਾਰ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਦੇਖੋ ਕਿ ਗੇਟਵੇ ਨੇ ਕਿਹੜੀ ਪਛਾਣ ਦਰਜ ਕੀਤੀ। ਜੇ ਕੁੰਜੀ ਅਤੇ ਸਰਟੀਫਿਕੇਟ ਮਿਲਦੇ ਹਨ ਅਤੇ ਪ੍ਰਮਾਣਿਕਤਾ ਫਿਰ ਵੀ ਫੇਲ੍ਹ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਨੁਕਸ ਜੋੜੀ ਵਿੱਚ ਨਹੀਂ, ਭਰੋਸੇ, ਪਛਾਣ-ਮੈਪਿੰਗ ਜਾਂ ਪਹੁੰਚ ਨੀਤੀ ਵਿੱਚ ਹੈ।
ਵਾਪਸੀ ਲਈ ਪਿਛਲੀ ਕੁੰਜੀ ਅਤੇ ਸਰਟੀਫਿਕੇਟ ਤਾਰੀਖ ਵਾਲੀ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਰੱਖੋ ਅਤੇ ਦੋਵੇਂ ਇਕੱਠੇ ਬਹਾਲ ਕਰੋ, ਕਦੇ ਵੀ ਇੱਕ ਨਹੀਂ। ਸਰਟੀਫਿਕੇਟ ਤੋਂ ਬਿਨਾਂ ਕੁੰਜੀ ਅਤੇ ਕੁੰਜੀ ਤੋਂ ਬਿਨਾਂ ਸਰਟੀਫਿਕੇਟ ਬਾਹਰੋਂ ਇੱਕੋ ਜਿਹੇ ਫੇਲ੍ਹ ਹੁੰਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਅੱਧ-ਬਹਾਲ ਜੋੜੀਆਂ ਰਾਤ ਦੋ ਵਜੇ ਖੋਲ੍ਹਣਾ ਮਹਿੰਗਾ ਹੋ ਜਾਂਦਾ ਹੈ।