@@ -22,6 +22,7 @@ import (
22
22
"encoding/pem"
23
23
"errors"
24
24
"fmt"
25
+ "io"
25
26
"net"
26
27
"strings"
27
28
"time"
@@ -128,15 +129,24 @@ func (b *keyfactorBackend) submitCSR(ctx context.Context, req *logical.Request,
128
129
129
130
b .Logger ().Debug ("setting parameters on the request.. " )
130
131
131
- apiRequest := client .V1 .EnrollmentApi .NewCreateEnrollmentCSRRequest (ctx ).EnrollmentCSREnrollmentRequest (enrollmentRequest ).XCertificateformat ("PEM" )
132
+ apiRequest := client .V1 .EnrollmentApi .NewCreateEnrollmentCSRRequest (ctx ).ForceEnroll ( true ). EnrollmentCSREnrollmentRequest (enrollmentRequest ).XCertificateformat ("PEM" )
132
133
133
134
b .Logger ().Debug ("about to connect to " + config .KeyfactorUrl + " with Keyfactor client for CSR submission" )
134
135
135
136
resData , httpRes , err := apiRequest .Execute ()
136
137
137
138
if err != nil || httpRes .StatusCode != 200 {
138
- b .Logger ().Error (fmt .Sprintf ("there was an error performing CSR enrollment. HttpStatusCode: %d, error: %s" , httpRes .StatusCode , err ))
139
- return nil , "" , err
139
+ body , bodyErr := io .ReadAll (httpRes .Body )
140
+ errMsg := ""
141
+
142
+ if bodyErr != nil {
143
+ b .Logger ().Error (fmt .Sprintf ("there was an error reading the response body: %v" , bodyErr ))
144
+ errMsg = err .Error ()
145
+ } else {
146
+ errMsg = string (body )
147
+ }
148
+ b .Logger ().Error (fmt .Sprintf ("there was an error performing CSR enrollment. HttpStatusCode: %d, error: %s" , httpRes .StatusCode , errMsg ))
149
+ return nil , "" , fmt .Errorf (errMsg )
140
150
}
141
151
142
152
// Read certificates from response
@@ -389,19 +399,17 @@ func fetchCertIssuedByCA(ctx context.Context, req *logical.Request, b *keyfactor
389
399
390
400
//caName = strings.Replace(caName, " ", "%20", -1)
391
401
392
- getCertRequest := v1.ApiGetCertificatesRequest {}
393
- getCertRequest .QueryString ("CA -eq " + caName )
394
- getCertRequest .ReturnLimit (1 )
395
-
396
402
// Send request and check status
397
- b .Logger ().Debug ("calling API with query string %s for cert retrieval" , getCertRequest .QueryString )
398
403
399
- apiRequest := client .V1 .CertificateApi .NewGetCertificatesRequest (ctx )
404
+ b .Logger ().Debug (fmt .Sprintf ("calling API with to fetch cert issued by %s" , caName ))
405
+
406
+ certs , httpResponse , err := client .V1 .CertificateApi .NewGetCertificatesRequest (ctx ).QueryString ("CA -eq \" " + caName + "\" " ).ReturnLimit (1 ).Execute ()
400
407
401
- certs , httpResponse , err := apiRequest .ApiService . GetCertificatesExecute ( getCertRequest )
408
+ // certs, httpResponse, err := apiRequest.Execute( )
402
409
403
410
if err != nil {
404
- b .Logger ().Info (fmt .Sprintf ("failed getting cert: %s" , err .Error ()))
411
+ b .Logger ().Error (fmt .Sprintf ("failed to retreive cert: %s" , err .Error ()))
412
+ b .Logger ().Debug (fmt .Sprintf ("http status code: %d, http response: %s" , httpResponse .StatusCode , httpResponse .Body ))
405
413
return nil , err
406
414
}
407
415
@@ -411,7 +419,7 @@ func fetchCertIssuedByCA(ctx context.Context, req *logical.Request, b *keyfactor
411
419
return nil , fmt .Errorf ("error downloading certificate. returned status = %d\n %s" , httpResponse .StatusCode , httpResponse .Body )
412
420
}
413
421
414
- b .Logger ().Debug ("response = " , certs )
422
+ b .Logger ().Debug (fmt . Sprintf ( "cert issued by CA response: %s " , certs ) )
415
423
416
424
if len (certs ) == 0 {
417
425
return nil , fmt .Errorf ("no certificates issued by CA %s found in Command. At least 1 must exist in order to retreive the CA or CA chain certificate(s)" , caName )
@@ -434,8 +442,6 @@ func fetchChainAndCAForCert(ctx context.Context, req *logical.Request, b *keyfac
434
442
if err != nil {
435
443
b .Logger ().Error ("unable to create the http client" )
436
444
}
437
- // This is only needed when running as a vault extension
438
- b .Logger ().Debug ("Closing idle connections" )
439
445
440
446
// Build request
441
447
0 commit comments