CSR (Certificate Signing Request) encoded data का एक block है जो आप SSL certificate apply करने के लिए Certificate Authority (CA) को भेजते हैं। इसमें आपकी public key और domain information होती है। CA इसे use करके आपका certificate create करता है।
CSR के अंदर क्या है
| Field | Example | Required? |
|---|---|---|
| Common Name (CN) | example.com | हाँ |
| Public Key | आपकी RSA या ECDSA public key | हाँ |
| Key Algorithm | ECDSA P-256 या RSA 2048 | हाँ |
| Organization | Your Company LLC | DV के लिए optional |
| Country | US | DV के लिए optional |
| SANs | www.example.com, api.example.com | Multi-domain के लिए |
DV certificates (जैसे Let’s Encrypt) के लिए, सिर्फ domain name और public key matter करते हैं। Organization fields ignore होती हैं।
CSR generation कैसे काम करता है
- Key pair create करें — एक private key और public key
- CSR create करें — public key + domain info को standard format (PKCS#10) में encode करें
- CSR sign करें — private key से sign करें (prove करता है कि matching private key आपके पास है)
- CA को भेजें — CA आपका domain ownership verify करता है, फिर CSR use करके certificate create करता है
Private key आपके system से कभी बाहर नहीं जाती। CSR में सिर्फ public key होती है।
GetHTTPS CSR automatically handle करता है
Traditional tools के साथ, OpenSSL से manually CSR generate करना होता:
# Manual तरीका (GetHTTPS के साथ जरूरी नहीं)
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
-keyout privkey.pem -out csr.pem -nodes \
-subj "/CN=example.com"
GetHTTPS के साथ, आप CSR कभी देखते या touch नहीं करते। Tool:
- आपके browser (Web Crypto API) में key pair generate करता है
- आपके domain input से automatically CSR create करता है
- ACME flow के part के रूप में Let’s Encrypt को भेजता है
- आपको download करने के लिए signed certificate देता है
CSR एक internal step है — आप बस domain enter करें और certificate पाएँ।
Manually CSR generate करना (जब जरूरी हो)
अगर standalone CSR चाहिए (commercial CA के लिए, या ऐसे platform जो upload require करता है), यहाँ तरीका है:
ECDSA P-256 (recommended)
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
-keyout privkey.pem -out csr.pem -nodes \
-subj "/CN=example.com"
RSA 2048
openssl req -new -newkey rsa:2048 \
-keyout privkey.pem -out csr.pem -nodes \
-subj "/CN=example.com"
Multiple domains (SAN) के साथ
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
-keyout privkey.pem -out csr.pem -nodes \
-subj "/CN=example.com" \
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"
CSR verify करें
openssl req -in csr.pem -noout -text
यह CSR में embedded domain name, key algorithm, और key size दिखाता है।
ACME protocol में CSR
ACME protocol (Let’s Encrypt use करता है) में, CSR finalize step में भेजा जाता है — domain verification pass होने के बाद। CA certificate create करने के लिए CSR से public key use करता है। CSR format PKCS#10 है, ACME JSON message में base64url encoded।
GetHTTPS के साथ, यह पूरी process Web Crypto API और pkijs library use करके JavaScript में होती है। आप कभी raw CSR bytes नहीं देखते।
FAQ
CSR file रखनी चाहिए?
नहीं। CSR सिर्फ certificate request के दौरान use होता है। CA द्वारा certificate issue करने के बाद, CSR का कोई purpose नहीं। अपनी private key और certificate रखें — CSR delete कर सकते हैं।
Renewal के लिए CSR reuse कर सकते हैं?
Technically हाँ, लेकिन हर renewal के लिए new key pair और CSR create करना better है। यह key rotation principle follow करता है और key compromise होने पर exposure limit करता है।
CSR और certificate में क्या difference है?
CSR एक request है — इसमें आपकी public key होती है और CA से sign करने को कहता है। Certificate result है — CA का signed statement कि आपकी public key आपके domain की है। CSR input है; certificate output है।
Wildcard domain के लिए CSR बना सकते हैं?
हाँ। Common Name में *.example.com use करें:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
-keyout privkey.pem -out csr.pem -nodes \
-subj "/CN=*.example.com"
GetHTTPS के साथ, manually CSR create करने की जरूरत नहीं — domain में *.example.com enter करें और GetHTTPS CSR automatically handle करता है।
CSR में “key usage” का क्या मतलब है?
Key usage extensions specify करते हैं कि certificate किसके लिए use हो सकता है — TLS certificates के लिए typically “Digital Signature” और “Key Encipherment”। GetHTTPS और ज्यादातर ACME clients ये by default correctly set करते हैं। Key usage के बारे में तभी worry करें जब specific requirements वाले commercial CA के लिए manually CSRs create कर रहे हों।