@@ -3,6 +3,7 @@ package nginx
33import (
44 "bytes"
55 "fmt"
6+ "io/ioutil"
67 "os"
78 "os/exec"
89 "path"
@@ -174,25 +175,34 @@ func (nginx *NginxController) AddOrUpdateCertAndKey(name string, cert string, ke
174175 pemFileName := nginx .nginxCertsPath + "/" + name + ".pem"
175176
176177 if ! nginx .local {
177- pem , err := os . Create ( pemFileName )
178+ pem , err := ioutil . TempFile ( nginx . nginxCertsPath , name )
178179 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 )
180181 }
181- defer pem .Close ()
182182
183183 _ , err = pem .WriteString (key )
184184 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 )
186186 }
187187
188188 _ , err = pem .WriteString ("\n " )
189189 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 )
191191 }
192192
193193 _ , err = pem .WriteString (cert )
194194 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 )
196206 }
197207 }
198208
0 commit comments