Skip to content

Commit 9243a66

Browse files
committed
tiny fix
1 parent 080e718 commit 9243a66

File tree

4 files changed

+24
-18
lines changed

4 files changed

+24
-18
lines changed

.github/workflows/go.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Set up Go
1818
uses: actions/setup-go@v2
1919
with:
20-
go-version: 1.17
20+
go-version: "1.21.0"
2121

2222
- name: Build
2323
run: |

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*.crt
22
*.key
33
.idea/
4+
certs/

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
module github.com/virusdefender/cert-copier
1+
module github.com/virusdefender/copy-cert
22

3-
go 1.17
3+
go 1.21

main.go

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ import (
88
"crypto/x509"
99
"encoding/pem"
1010
"fmt"
11-
"io/ioutil"
1211
"log"
1312
"os"
1413
"path/filepath"
1514
"regexp"
15+
"slices"
16+
"strings"
17+
"time"
1618
)
1719

1820
type certPair struct {
@@ -25,7 +27,7 @@ type certPair struct {
2527

2628
func getCertsFromNetwork(addr string) ([]*x509.Certificate, error) {
2729
conf := &tls.Config{
28-
InsecureSkipVerify: true,
30+
InsecureSkipVerify: false,
2931
}
3032
conn, err := tls.Dial("tcp", addr, conf)
3133
if err != nil {
@@ -35,20 +37,14 @@ func getCertsFromNetwork(addr string) ([]*x509.Certificate, error) {
3537
return conn.ConnectionState().PeerCertificates, nil
3638
}
3739

38-
func reverse(s []*certPair) {
39-
for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
40-
s[i], s[j] = s[j], s[i]
41-
}
42-
}
43-
4440
func makeCerts(originCerts []*x509.Certificate) ([]*certPair, error) {
4541
certs := make([]*certPair, len(originCerts))
4642
// the origin order: website cert, intermediate ca, root ca
4743
for idx, cert := range originCerts {
4844
log.Printf("got cert: %s", cert.Subject.CommonName)
4945
certs[idx] = &certPair{originCert: cert}
5046
}
51-
reverse(certs)
47+
slices.Reverse(certs)
5248

5349
for idx, pair := range certs {
5450
var pub interface{}
@@ -120,23 +116,31 @@ func main() {
120116
if err != nil {
121117
log.Fatal(err)
122118
}
123-
reverse(newCerts)
119+
slices.Reverse(newCerts)
120+
121+
dir := filepath.Join("certs", time.Now().Local().Format("2006_01_02_15_04_05"))
122+
err = os.MkdirAll(dir, 0o744)
123+
if err != nil {
124+
log.Fatal(err)
125+
}
124126

125-
bundleCert, err := os.OpenFile("bundle.crt", os.O_WRONLY|os.O_CREATE, 0o744)
127+
bundleCert, err := os.OpenFile(filepath.Join(dir, "bundle.crt"), os.O_WRONLY|os.O_CREATE, 0o744)
126128
if err != nil {
127129
log.Fatal(err)
128130
}
129131
defer bundleCert.Close()
130-
bundleKey, err := os.OpenFile("bundle.key", os.O_WRONLY|os.O_CREATE, 0o744)
132+
bundleKey, err := os.OpenFile(filepath.Join(dir, "bundle.key"), os.O_WRONLY|os.O_CREATE, 0o744)
131133
if err != nil {
132134
log.Fatal(err)
133135
}
134136
defer bundleKey.Close()
135137

136138
for _, pair := range newCerts {
137139
log.Printf("going to write new cert and key: %s", pair.newCert.Subject.CommonName)
138-
pathBase := fileNameRegex.ReplaceAllString(pair.newCert.Subject.CommonName, "_")
139-
err = ioutil.WriteFile(pathBase+".crt", pair.newCertPem, 0o744)
140+
// 担心星号在 Windows 上是不合法的文件名(当然我也没测试),但是被替换为下换线又很奇怪,所以替换成 __wildcard__
141+
pathBase := strings.ReplaceAll(pair.newCert.Subject.CommonName, "*", "__wildcard__")
142+
pathBase = fileNameRegex.ReplaceAllString(pathBase, "_")
143+
err = os.WriteFile(filepath.Join(dir, pathBase+".crt"), pair.newCertPem, 0o744)
140144
if err != nil {
141145
log.Fatal(err)
142146
}
@@ -145,7 +149,7 @@ func main() {
145149
log.Fatal(err)
146150
}
147151

148-
err = ioutil.WriteFile(pathBase+".key", pair.privPem, 0o744)
152+
err = os.WriteFile(filepath.Join(dir, pathBase+".key"), pair.privPem, 0o744)
149153
if err != nil {
150154
log.Fatal(err)
151155
}
@@ -154,4 +158,5 @@ func main() {
154158
log.Fatal(err)
155159
}
156160
}
161+
log.Printf("certs save to %s", dir)
157162
}

0 commit comments

Comments
 (0)