@@ -189,7 +189,7 @@ func Cert(filename string) (tls.Certificate, error) {
189
189
if err != nil {
190
190
return tls.Certificate {}, errors .WithStack (err )
191
191
}
192
- blocks , err := pkcs12 .ToPEM (p12 , "" )
192
+ priv , domainCert , caCerts , err := pkcs12 .DecodeChain (p12 , "" )
193
193
if err == pkcs12 .ErrIncorrectPassword {
194
194
priv , domainCert , caCerts , err := pkcs12 .DecodeChain (p12 , "symfony" )
195
195
if err != nil {
@@ -200,7 +200,7 @@ func Cert(filename string) (tls.Certificate, error) {
200
200
201
201
// In case the previous certificate has a passphrase, we re-encode it
202
202
// on the fly without passphrase
203
- pfxData , err := pkcs12 .Encode (rand . Reader , priv , domainCert , caCerts , "" )
203
+ pfxData , err := pkcs12 .Modern . Encode (priv , domainCert , caCerts , "" )
204
204
if err != nil {
205
205
return tls.Certificate {}, errors .WithStack (err )
206
206
}
@@ -219,15 +219,15 @@ func Cert(filename string) (tls.Certificate, error) {
219
219
if err != nil {
220
220
return tls.Certificate {}, errors .WithStack (err )
221
221
}
222
- var pemData []byte
223
- for _ , b := range blocks {
224
- pemData = append (pemData , pem . EncodeToMemory ( b ) ... )
222
+ certs := [][] byte { domainCert . Raw }
223
+ for _ , c := range caCerts {
224
+ certs = append (certs , c . Raw )
225
225
}
226
- cert , err := tls . X509KeyPair ( pemData , pemData )
227
- if err != nil {
228
- return tls. Certificate {}, errors . WithStack ( err )
229
- }
230
- return cert , nil
226
+
227
+ return tls. Certificate {
228
+ Certificate : certs ,
229
+ PrivateKey : priv ,
230
+ } , nil
231
231
}
232
232
233
233
func (ca * CA ) CreateCert (hosts []string ) (tls.Certificate , error ) {
@@ -326,7 +326,7 @@ func (ca *CA) MakeCert(filename string, hosts []string) error {
326
326
priv := c .PrivateKey
327
327
328
328
domainCert , _ := x509 .ParseCertificate (cert )
329
- pfxData , err := pkcs12 .Encode (rand . Reader , priv , domainCert , []* x509.Certificate {ca .cert }, "" )
329
+ pfxData , err := pkcs12 .Modern . Encode (priv , domainCert , []* x509.Certificate {ca .cert }, "" )
330
330
if err != nil {
331
331
return errors .Wrap (err , "failed to generate PKCS#12" )
332
332
}
0 commit comments