lnd: Add ability to encrypt TLS key on disk

This commit is contained in:
Orbital
2022-11-15 16:10:27 -06:00
parent 60be9085c3
commit c0f44a17b7
7 changed files with 738 additions and 126 deletions

View File

@ -27,7 +27,6 @@ import (
"github.com/lightningnetwork/lnd/aliasmgr"
"github.com/lightningnetwork/lnd/autopilot"
"github.com/lightningnetwork/lnd/brontide"
"github.com/lightningnetwork/lnd/cert"
"github.com/lightningnetwork/lnd/chainreg"
"github.com/lightningnetwork/lnd/chanacceptor"
"github.com/lightningnetwork/lnd/chanbackup"
@ -294,6 +293,8 @@ type server struct {
readPool *pool.Read
tlsManager *TLSManager
// featureMgr dispatches feature vectors for various contexts within the
// daemon.
featureMgr *feature.Manager
@ -473,7 +474,8 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
nodeKeyDesc *keychain.KeyDescriptor,
chansToRestore walletunlocker.ChannelsToRecover,
chanPredicate chanacceptor.ChannelAcceptor,
torController *tor.Controller) (*server, error) {
torController *tor.Controller, tlsManager *TLSManager) (*server,
error) {
var (
err error
@ -600,6 +602,8 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
customMessageServer: subscribe.NewServer(),
tlsManager: tlsManager,
featureMgr: featureMgr,
quit: make(chan struct{}),
}
@ -1640,18 +1644,15 @@ func (s *server) createLivenessMonitor(cfg *Config, cc *chainreg.ChainControl) {
tlsHealthCheck := healthcheck.NewObservation(
"tls",
func() error {
_, parsedCert, err := cert.LoadCert(
cfg.TLSCertPath, cfg.TLSKeyPath,
expired, expTime, err := s.tlsManager.IsCertExpired(
s.cc.KeyRing,
)
if err != nil {
return err
}
// If the current time is passed the certificate's
// expiry time, then it is considered expired
if time.Now().After(parsedCert.NotAfter) {
if expired {
return fmt.Errorf("TLS certificate is "+
"expired as of %v", parsedCert.NotAfter)
"expired as of %v", expTime)
}
// If the certificate is not outdated, no error needs