feat(backend): native SSL support

pull/838/head
030 2017-04-25 11:51:22 +02:00 committed by Anthony Lapenna
parent e70817f776
commit 6fa6dde637
6 changed files with 21 additions and 0 deletions

View File

@ -43,6 +43,9 @@ func (*Service) ParseFlags(version string) (*portainer.CLIFlags, error) {
TLSCacert: kingpin.Flag("tlscacert", "Path to the CA").Default(defaultTLSCACertPath).String(), TLSCacert: kingpin.Flag("tlscacert", "Path to the CA").Default(defaultTLSCACertPath).String(),
TLSCert: kingpin.Flag("tlscert", "Path to the TLS certificate file").Default(defaultTLSCertPath).String(), TLSCert: kingpin.Flag("tlscert", "Path to the TLS certificate file").Default(defaultTLSCertPath).String(),
TLSKey: kingpin.Flag("tlskey", "Path to the TLS key").Default(defaultTLSKeyPath).String(), TLSKey: kingpin.Flag("tlskey", "Path to the TLS key").Default(defaultTLSKeyPath).String(),
SSL: kingpin.Flag("ssl", "Secure Portainer instance using SSL").Default(defaultSSL).Bool(),
SSLCert: kingpin.Flag("sslcert", "Path to the SSL certificate used to secure the Portainer instance").Default(defaultSSLCertPath).String(),
SSLKey: kingpin.Flag("sslkey", "Path to the SSL key used to secure the Portainer instance").Default(defaultSSLKeyPath).String(),
AdminPassword: kingpin.Flag("admin-password", "Hashed admin password").String(), AdminPassword: kingpin.Flag("admin-password", "Hashed admin password").String(),
} }

View File

@ -13,5 +13,8 @@ const (
defaultTLSCACertPath = "/certs/ca.pem" defaultTLSCACertPath = "/certs/ca.pem"
defaultTLSCertPath = "/certs/cert.pem" defaultTLSCertPath = "/certs/cert.pem"
defaultTLSKeyPath = "/certs/key.pem" defaultTLSKeyPath = "/certs/key.pem"
defaultSSL = "false"
defaultSSLCertPath = "/certs/portainer.crt"
defaultSSLKeyPath = "/certs/portainer.key"
defaultSyncInterval = "60s" defaultSyncInterval = "60s"
) )

View File

@ -11,5 +11,8 @@ const (
defaultTLSCACertPath = "C:\\certs\\ca.pem" defaultTLSCACertPath = "C:\\certs\\ca.pem"
defaultTLSCertPath = "C:\\certs\\cert.pem" defaultTLSCertPath = "C:\\certs\\cert.pem"
defaultTLSKeyPath = "C:\\certs\\key.pem" defaultTLSKeyPath = "C:\\certs\\key.pem"
defaultSSL = "false"
defaultSSLCertPath = "C:\\certs\\portainer.crt"
defaultSSLKeyPath = "C:\\certs\\portainer.key"
defaultSyncInterval = "60s" defaultSyncInterval = "60s"
) )

View File

@ -166,6 +166,9 @@ func main() {
CryptoService: cryptoService, CryptoService: cryptoService,
JWTService: jwtService, JWTService: jwtService,
FileService: fileService, FileService: fileService,
SSL: *flags.SSL,
SSLCert: *flags.SSLCert,
SSLKey: *flags.SSLKey,
} }
log.Printf("Starting Portainer on %s", *flags.Addr) log.Printf("Starting Portainer on %s", *flags.Addr)

View File

@ -21,6 +21,9 @@ type Server struct {
Settings *portainer.Settings Settings *portainer.Settings
TemplatesURL string TemplatesURL string
Handler *Handler Handler *Handler
SSL bool
SSLCert string
SSLKey string
} }
// Start starts the HTTP server // Start starts the HTTP server
@ -70,5 +73,8 @@ func (server *Server) Start() error {
UploadHandler: uploadHandler, UploadHandler: uploadHandler,
} }
if server.SSL {
return http.ListenAndServeTLS(server.BindAddress, server.SSLCert, server.SSLKey, server.Handler)
}
return http.ListenAndServe(server.BindAddress, server.Handler) return http.ListenAndServe(server.BindAddress, server.Handler)
} }

View File

@ -26,6 +26,9 @@ type (
TLSCacert *string TLSCacert *string
TLSCert *string TLSCert *string
TLSKey *string TLSKey *string
SSL *bool
SSLCert *string
SSLKey *string
AdminPassword *string AdminPassword *string
} }