@@ -91,12 +91,12 @@ func (m *Manager) GetChallengeToken(domain string) string {
91
91
location := fmt .Sprintf ("%s/%s/%s-acme.json" , m .Location , domain , domain )
92
92
file , err := os .ReadFile (location )
93
93
if err != nil {
94
- log .Fatalf ("Failed to read domain acme file: %v " , err )
94
+ log .Println ("Failed to read domain acme file: " , err )
95
95
}
96
96
97
97
var domainAcme DomainAcme
98
98
if err := json .Unmarshal (file , & domainAcme ); err != nil {
99
- log .Fatalf ("Failed to unmarshal domain acme data: %v " , err )
99
+ log .Println ("Failed to unmarshal domain acme data: " , err )
100
100
}
101
101
102
102
return domainAcme .IssuerData .ChallengeToken
@@ -161,7 +161,7 @@ func (m *Manager) HTTPHandler(fallback http.Handler) http.Handler {
161
161
162
162
acmeData , err := m .GetAcmeFileData (r .Host )
163
163
if err != nil {
164
- log .Fatalf ("Failed to get acme file data: %v " , err )
164
+ log .Println ("Failed to get acme file data: " , err )
165
165
}
166
166
167
167
client := & acme.Client {
@@ -172,7 +172,7 @@ func (m *Manager) HTTPHandler(fallback http.Handler) http.Handler {
172
172
// HTTP-01 challenge response
173
173
http01 , err := client .HTTP01ChallengeResponse (m .GetChallengeToken (r .Host ))
174
174
if err != nil {
175
- log .Fatalf ("HTTP-01 challenge response failed: %v " , err )
175
+ log .Println ("HTTP-01 challenge response failed: " , err )
176
176
}
177
177
178
178
if token == m .GetChallengeToken (r .Host ) {
@@ -191,30 +191,30 @@ func (m *Manager) issueLetsEncryptCert(email, domain, location string) {
191
191
// check location is exists or not if not create it
192
192
if _ , err := os .Stat (location ); os .IsNotExist (err ) {
193
193
if err := os .Mkdir (location , 0755 ); err != nil {
194
- log .Fatalf ("Failed to create directory: %v " , err )
194
+ log .Println ("Failed to create directory: " , err )
195
195
}
196
196
}
197
197
198
198
// create folder for domain
199
199
location = location + "/" + domain
200
200
if _ , err := os .Stat (location ); os .IsNotExist (err ) {
201
201
if err := os .Mkdir (location , 0755 ); err != nil {
202
- log .Fatalf ("Failed to create domain directory: %v " , err )
202
+ log .Println ("Failed to create domain directory: " , err )
203
203
}
204
204
}
205
205
206
206
// if not exists create domainAcme.json file
207
207
domainAcmeFile := location + "/" + domain + "-acme.json"
208
208
if _ , err := os .Stat (domainAcmeFile ); os .IsNotExist (err ) {
209
209
if _ , err := os .Create (domainAcmeFile ); err != nil {
210
- log .Fatalf ("Failed to create domain acme file: %v " , err )
210
+ log .Println ("Failed to create domain acme file: " , err )
211
211
}
212
212
}
213
213
214
214
// read domainAcme.json file
215
215
acmefile , err := os .ReadFile (domainAcmeFile )
216
216
if err != nil {
217
- log .Fatalf ("Failed to read domain acme file: %v " , err )
217
+ log .Println ("Failed to read domain acme file: " , err )
218
218
}
219
219
220
220
var domainAcme DomainAcme
@@ -239,7 +239,7 @@ func (m *Manager) issueLetsEncryptCert(email, domain, location string) {
239
239
// Generate a new account key
240
240
accountKey , err := rsa .GenerateKey (rand .Reader , 4096 )
241
241
if err != nil {
242
- log .Fatalf ("Account key generation failed: %v " , err )
242
+ log .Println ("Account key generation failed: " , err )
243
243
}
244
244
245
245
client := & acme.Client {
@@ -255,7 +255,7 @@ func (m *Manager) issueLetsEncryptCert(email, domain, location string) {
255
255
acct := & acme.Account {Contact : []string {"mailto:" + email }}
256
256
acct , err = client .Register (context .TODO (), acct , acme .AcceptTOS )
257
257
if err != nil {
258
- log .Fatalf ("Account registration failed: %v " , err )
258
+ log .Println ("Account registration failed: " , err )
259
259
}
260
260
fmt .Printf ("Account registered: %v\n " , acct .URI )
261
261
@@ -274,25 +274,25 @@ func (m *Manager) issueLetsEncryptCert(email, domain, location string) {
274
274
// save domainAcme struct to domainAcme.json file
275
275
jsonData , err := json .Marshal (domainAcme )
276
276
if err != nil {
277
- log .Fatalf ("Failed to marshal domain acme data: %v " , err )
277
+ log .Println ("Failed to marshal domain acme data: " , err )
278
278
}
279
279
280
280
if err := os .WriteFile (domainAcmeFile , jsonData , 0644 ); err != nil {
281
- log .Fatalf ("Failed to write domain acme data: %v " , err )
281
+ log .Println ("Failed to write domain acme data: " , err )
282
282
}
283
283
284
284
// Create a new order for the domain
285
285
order , err := client .AuthorizeOrder (context .TODO (), acme .DomainIDs (domain ))
286
286
if err != nil {
287
- log .Fatalf ("Order authorization failed: %v " , err )
287
+ log .Println ("Order authorization failed: " , err )
288
288
}
289
289
290
290
// HTTP-01 challenge for domain verification
291
291
var chal * acme.Challenge
292
292
for _ , authzURL := range order .AuthzURLs {
293
293
authz , err := client .GetAuthorization (context .TODO (), authzURL )
294
294
if err != nil {
295
- log .Fatalf ("Failed to get authorization: %v " , err )
295
+ log .Println ("Failed to get authorization: " , err )
296
296
}
297
297
for _ , c := range authz .Challenges {
298
298
if c .Type == "http-01" {
@@ -306,26 +306,30 @@ func (m *Manager) issueLetsEncryptCert(email, domain, location string) {
306
306
}
307
307
308
308
if chal == nil {
309
- log .Fatalf ("No HTTP-01 challenge found" )
309
+ log .Println ("No HTTP-01 challenge found" )
310
310
}
311
311
312
- domainAcme .IssuerData .ChallengeToken = chal .Token
313
- log .Println ("Challenge token: " + chal .Token )
312
+ if chal != nil {
313
+ domainAcme .IssuerData .ChallengeToken = chal .Token
314
+ log .Println ("Challenge token: " + chal .Token )
315
+ } else {
316
+ log .Println ("Challenge token is nil." )
317
+ }
314
318
315
319
// save domainAcme struct to domainAcme.json file
316
320
jsonData , err = json .Marshal (domainAcme )
317
321
if err != nil {
318
- log .Fatalf ("Failed to marshal domain acme data: %v " , err )
322
+ log .Println ("Failed to marshal domain acme data: " , err )
319
323
}
320
324
321
325
if err := os .WriteFile (domainAcmeFile , jsonData , 0644 ); err != nil {
322
- log .Fatalf ("Failed to write domain acme data: %v " , err )
326
+ log .Println ("Failed to write domain acme data: " , err )
323
327
}
324
328
325
329
// Accept the challenge
326
330
_ , err = client .Accept (context .TODO (), chal )
327
331
if err != nil {
328
- log .Fatalf ("Challenge acceptance failed: %v " , err )
332
+ log .Println ("Challenge acceptance failed: " , err )
329
333
}
330
334
331
335
// Wait for challenge to be valid
@@ -347,21 +351,21 @@ func (m *Manager) issueLetsEncryptCert(email, domain, location string) {
347
351
348
352
ecdsaPrivateKey , err := ecdsa .GenerateKey (elliptic .P256 (), rand .Reader )
349
353
if err != nil {
350
- log .Fatalf ("ECDSA private key generation failed: %v " , err )
354
+ log .Println ("ECDSA private key generation failed: " , err )
351
355
}
352
356
353
357
// Create a CSR
354
358
csr , err := x509 .CreateCertificateRequest (rand .Reader , & x509.CertificateRequest {
355
359
Subject : pkix.Name {CommonName : domain },
356
360
}, ecdsaPrivateKey )
357
361
if err != nil {
358
- log .Fatalf ("Certificate request creation failed: %v " , err )
362
+ log .Println ("Certificate request creation failed: " , err )
359
363
}
360
364
361
365
// Finalize the order and get the certificate
362
366
der , _ , err := client .CreateOrderCert (context .TODO (), order .FinalizeURL , csr , true )
363
367
if err != nil {
364
- log .Fatalf ("Certificate issuance failed: %v " , err )
368
+ log .Println ("Certificate issuance failed: " , err )
365
369
}
366
370
367
371
// der contains the certificate chain
@@ -371,41 +375,41 @@ func (m *Manager) issueLetsEncryptCert(email, domain, location string) {
371
375
keyFile := location + "/" + domain + "-key.pem"
372
376
373
377
if _ , err := os .Create (certFile ); err != nil {
374
- log .Fatalf ("Failed to create certificate file: %v " , err )
378
+ log .Println ("Failed to create certificate file: " , err )
375
379
}
376
380
377
381
file , err := os .OpenFile (certFile , os .O_APPEND | os .O_CREATE | os .O_WRONLY , 0644 )
378
382
if err != nil {
379
- log .Fatalf ("Failed to open file: %v " , err )
383
+ log .Println ("Failed to open file: " , err )
380
384
}
381
385
382
386
for _ , b := range der {
383
387
block := & pem.Block {Type : "CERTIFICATE" , Bytes : b }
384
388
// Write to file
385
389
if err := pem .Encode (file , block ); err != nil {
386
- log .Fatalf ("Failed to write certificate: %v " , err )
390
+ log .Println ("Failed to write certificate: " , err )
387
391
}
388
392
389
393
}
390
394
391
395
ecdsaPrivateKeyBytes , err := x509 .MarshalECPrivateKey (ecdsaPrivateKey )
392
396
if err != nil {
393
- log .Fatalf ("Failed to marshal ECDSA private key: %v " , err )
397
+ log .Println ("Failed to marshal ECDSA private key: " , err )
394
398
}
395
399
396
400
keyPEM := pem .EncodeToMemory (& pem.Block {Type : "EC PRIVATE KEY" , Bytes : ecdsaPrivateKeyBytes })
397
401
if err := os .WriteFile (keyFile , keyPEM , 0644 ); err != nil {
398
- log .Fatalf ("Failed to write key: %v " , err )
402
+ log .Println ("Failed to write key: " , err )
399
403
}
400
404
401
405
crtFileData , err := os .ReadFile (certFile )
402
406
if err != nil {
403
- log .Fatalf ("Failed to read certificate file: %v " , err )
407
+ log .Println ("Failed to read certificate file: " , err )
404
408
}
405
409
406
410
keyFileData , err := os .ReadFile (keyFile )
407
411
if err != nil {
408
- log .Fatalf ("Failed to read key file: %v " , err )
412
+ log .Println ("Failed to read key file: " , err )
409
413
}
410
414
411
415
domainAcme .CertFile = string (crtFileData )
@@ -419,11 +423,11 @@ func (m *Manager) issueLetsEncryptCert(email, domain, location string) {
419
423
// save domainAcme struct to domainAcme.json file
420
424
jsonData , err = json .Marshal (domainAcme )
421
425
if err != nil {
422
- log .Fatalf ("Failed to marshal domain acme data: %v " , err )
426
+ log .Println ("Failed to marshal domain acme data: " , err )
423
427
}
424
428
425
429
if err := os .WriteFile (domainAcmeFile , jsonData , 0644 ); err != nil {
426
- log .Fatalf ("Failed to write domain acme data: %v " , err )
430
+ log .Println ("Failed to write domain acme data: " , err )
427
431
}
428
432
429
433
fmt .Println ("Certificate and key saved to " + location )
@@ -437,13 +441,13 @@ func (m *Manager) AddCustomCert(domain, certFileData, keyfileData string) {
437
441
438
442
if _ , err := os .Stat (location ); os .IsNotExist (err ) {
439
443
if _ , err := os .Create (location ); err != nil {
440
- log .Fatalf ("Failed to create domain acme file: %v " , err )
444
+ log .Println ("Failed to create domain acme file: " , err )
441
445
}
442
446
}
443
447
444
448
if _ , err := os .Stat (acmelocation ); os .IsNotExist (err ) {
445
449
if _ , err := os .Create (acmelocation ); err != nil {
446
- log .Fatalf ("Failed to create domain acme file: %v " , err )
450
+ log .Println ("Failed to create domain acme file: " , err )
447
451
}
448
452
}
449
453
@@ -457,30 +461,30 @@ func (m *Manager) AddCustomCert(domain, certFileData, keyfileData string) {
457
461
458
462
jsonData , err := json .Marshal (domainAcme )
459
463
if err != nil {
460
- log .Fatalf ("Failed to marshal domain acme data: %v " , err )
464
+ log .Println ("Failed to marshal domain acme data: " , err )
461
465
}
462
466
463
467
if err := os .WriteFile (acmelocation , jsonData , 0644 ); err != nil {
464
- log .Fatalf ("Failed to write domain acme data: %v " , err )
468
+ log .Println ("Failed to write domain acme data: " , err )
465
469
}
466
470
467
471
certFile := location + "/" + domain + "-cert.crt"
468
472
keyFile := location + "/" + domain + "-key.pem"
469
473
470
474
if _ , err := os .Create (certFile ); err != nil {
471
- log .Fatalf ("Failed to create certificate file: %v " , err )
475
+ log .Println ("Failed to create certificate file: " , err )
472
476
}
473
477
474
478
if _ , err := os .Create (keyFile ); err != nil {
475
- log .Fatalf ("Failed to create key file: %v " , err )
479
+ log .Println ("Failed to create key file: " , err )
476
480
}
477
481
478
482
if err := os .WriteFile (certFile , []byte (certFileData ), 0644 ); err != nil {
479
- log .Fatalf ("Failed to write certificate file: %v " , err )
483
+ log .Println ("Failed to write certificate file: " , err )
480
484
}
481
485
482
486
if err := os .WriteFile (keyFile , []byte (keyfileData ), 0644 ); err != nil {
483
- log .Fatalf ("Failed to write key file: %v " , err )
487
+ log .Println ("Failed to write key file: " , err )
484
488
}
485
489
486
490
fmt .Println ("Custom certificate and key saved to " + location )
0 commit comments