@@ -3,6 +3,7 @@ package nginx
3
3
import (
4
4
"bytes"
5
5
"fmt"
6
+ "io/ioutil"
6
7
"os"
7
8
"os/exec"
8
9
"path"
@@ -174,25 +175,34 @@ func (nginx *NginxController) AddOrUpdateCertAndKey(name string, cert string, ke
174
175
pemFileName := nginx .nginxCertsPath + "/" + name + ".pem"
175
176
176
177
if ! nginx .local {
177
- pem , err := os . Create ( pemFileName )
178
+ pem , err := ioutil . TempFile ( nginx . nginxCertsPath , name )
178
179
if err != nil {
179
- glog .Fatalf ("Couldn't create pem file %v: %v" , pemFileName , err )
180
+ glog .Fatalf ("Couldn't create a temp file for the pem file %v: %v" , name , err )
180
181
}
181
- defer pem .Close ()
182
182
183
183
_ , err = pem .WriteString (key )
184
184
if err != nil {
185
- glog .Fatalf ("Couldn't write to pem file %v: %v" , pemFileName , err )
185
+ glog .Fatalf ("Couldn't write to the temp pem file %v: %v" , pem . Name () , err )
186
186
}
187
187
188
188
_ , err = pem .WriteString ("\n " )
189
189
if err != nil {
190
- glog .Fatalf ("Couldn't write to pem file %v: %v" , pemFileName , err )
190
+ glog .Fatalf ("Couldn't write to the temp pem file %v: %v" , pem . Name () , err )
191
191
}
192
192
193
193
_ , err = pem .WriteString (cert )
194
194
if err != nil {
195
- glog .Fatalf ("Couldn't write to pem file %v: %v" , pemFileName , err )
195
+ glog .Fatalf ("Couldn't write to the temp pem file %v: %v" , pem .Name (), err )
196
+ }
197
+
198
+ err = pem .Close ()
199
+ if err != nil {
200
+ glog .Fatalf ("Couldn't close the temp pem file %v: %v" , pem .Name (), err )
201
+ }
202
+
203
+ err = os .Rename (pem .Name (), pemFileName )
204
+ if err != nil {
205
+ glog .Fatalf ("Fail to rename the temp pem file %v to %v: %v" , pem .Name (), pemFileName , err )
196
206
}
197
207
}
198
208
0 commit comments