关于密码套件和算法配置
GitHub Enterprise Server 允许您配置要使用的密码套件和加密算法:
- 端口 443(HTTPS Web 接口)和 8443 上的 TLS 连接(HTTPS 管理控制台)
- 端口 22 上的 SSH 连接(通过 SSH 执行 Git 操作)和端口 122(管理 shell 访问)
默认的安全密码套件基于行业标准 TLS 强化建议和现代安全最佳做法。 大多数组织应使用这些默认值,除非特定的符合性或安全要求另有规定。
组织可能需要自定义密码套件和加密算法,以满足特定的组织安全策略、行业标准或法规要求。
从 GitHub Enterprise Server 3.19 开始,TLS 密码是可配置的,Web 网关使用更安全的密码默认值。 为了保持与现有实例的向后兼容性,新预配的实例将使用这些新的默认值。
警告
配置过于严格的密码套件可能会阻止客户端连接到实例。 始终首先测试非生产环境中的更改,确保至少一个密码套件与客户端兼容,并在应用配置更改后验证连接性。
注意
配置 TLS 密码套件时,请在配置命令中使用逗号分隔的值。 GitHub Enterprise Server 自动将逗号分隔符转换为 HAProxy 配置的冒号。 密码套件按指定的顺序进行评估,因此请首先列出首选密码套件。
配置 TLS 密码套件
可以配置用于 TLS 1.2 和 TLS 1.3 连接的密码套件。
列出可用的 TLS 密码套件
-
通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。
ssh -p 122 admin@HOSTNAME -
若要查看 TLS 1.2 的默认安全密码套件,请运行以下命令。
Shell ghe-crypto list tlsv12-ciphersuites
ghe-crypto list tlsv12-ciphersuites -
若要查看 TLS 1.3 的默认安全密码套件,请运行以下命令。
Shell ghe-crypto list tlsv13-ciphersuites
ghe-crypto list tlsv13-ciphersuites
查看当前密码配置
-
通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。
ssh -p 122 admin@HOSTNAME -
若要查看配置的 TLS 1.2 密码套件,请运行以下命令。
Shell ghe-config github-ssl.tlsv12-ciphersuites
ghe-config github-ssl.tlsv12-ciphersuites -
若要查看配置的 TLS 1.3 密码套件,请运行以下命令。
Shell ghe-config github-ssl.tlsv13-ciphersuites
ghe-config github-ssl.tlsv13-ciphersuites如果这些命令返回空值,则实例使用安全默认值。
设置 TLS 1.2 密码套件
-
通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。
ssh -p 122 admin@HOSTNAME -
使用
ghe-crypto check命令检查所需的 TLS 1.2 密码套件。 将CIPHER1,CIPHER2,CIPHER3替换为逗号分隔的密码套件列表。Shell ghe-crypto check tlsv12-ciphersuites CIPHER1,CIPHER2,CIPHER3
ghe-crypto check tlsv12-ciphersuites CIPHER1,CIPHER2,CIPHER3例如:
ghe-crypto check tlsv12-ciphersuites ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-GCM-SHA384 -
如果密码字符串有效,请设置 TLS 1.2 密码套件。 将
CIPHER1,CIPHER2,CIPHER3替换为你的逗号分隔列表。Shell ghe-config github-ssl.tlsv12-ciphersuites 'CIPHER1,CIPHER2,CIPHER3'
ghe-config github-ssl.tlsv12-ciphersuites 'CIPHER1,CIPHER2,CIPHER3'例如:
ghe-config github-ssl.tlsv12-ciphersuites 'ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-GCM-SHA384' -
检查配置。
Shell ghe-config-check
ghe-config-check -
若要应用配置,请运行以下命令。
注意
在配置运行过程中,你的 GitHub Enterprise Server 实例 上的服务可能会重启,这可能会导致用户短暂停机。
Shell ghe-config-apply
ghe-config-apply -
等待配置运行完毕。
-
如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。
设置 TLS 1.3 密码套件
-
通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。
ssh -p 122 admin@HOSTNAME -
使用
ghe-crypto check命令检查所需的 TLS 1.3 密码套件。 将CIPHER1,CIPHER2,CIPHER3替换为逗号分隔的密码套件列表。Shell ghe-crypto check tlsv13-ciphersuites CIPHER1,CIPHER2,CIPHER3
ghe-crypto check tlsv13-ciphersuites CIPHER1,CIPHER2,CIPHER3例如:
ghe-crypto check tlsv13-ciphersuites TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256 -
如果密码字符串有效,请设置 TLS 1.3 密码套件。 将
CIPHER1,CIPHER2,CIPHER3替换为你的逗号分隔列表。Shell ghe-config github-ssl.tlsv13-ciphersuites 'CIPHER1,CIPHER2,CIPHER3'
ghe-config github-ssl.tlsv13-ciphersuites 'CIPHER1,CIPHER2,CIPHER3'例如:
ghe-config github-ssl.tlsv13-ciphersuites 'TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256' -
检查配置。
Shell ghe-config-check
ghe-config-check -
若要应用配置,请运行以下命令。
注意
在配置运行过程中,你的 GitHub Enterprise Server 实例 上的服务可能会重启,这可能会导致用户短暂停机。
Shell ghe-config-apply
ghe-config-apply -
等待配置运行完毕。
-
如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。
配置 SSH 加密算法
可以配置用于端口 22(Git 操作)和端口 122(管理外壳访问权限)上的 SSH 连接的加密算法。
列出可用的 SSH 算法
-
通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。
ssh -p 122 admin@HOSTNAME -
若要查看默认的安全 SSH 密码,请运行以下命令。
Shell ghe-crypto list ssh-ciphers
ghe-crypto list ssh-ciphers -
若要查看默认的安全 SSH MAC 算法,请运行以下命令。
Shell ghe-crypto list ssh-mac-algorithms
ghe-crypto list ssh-mac-algorithms -
若要查看默认的安全 SSH 密钥交换算法,请运行以下命令。
Shell ghe-crypto list ssh-kex-algorithms
ghe-crypto list ssh-kex-algorithms -
若要查看默认的安全 SSH 签名类型,请运行以下命令。
Shell ghe-crypto list ssh-signature-types
ghe-crypto list ssh-signature-types
查看当前的 SSH 配置
-
通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。
ssh -p 122 admin@HOSTNAME -
若要查看配置的 SSH 密码,请运行以下命令。
Shell ghe-config github-ssl.ssh-ciphers
ghe-config github-ssl.ssh-ciphers -
若要查看配置的 SSH MAC 算法,请运行以下命令。
Shell ghe-config github-ssl.ssh-mac-algorithms
ghe-config github-ssl.ssh-mac-algorithms -
若要查看配置的 SSH 密钥交换算法,请运行以下命令。
Shell ghe-config github-ssl.ssh-kex-algorithms
ghe-config github-ssl.ssh-kex-algorithms -
若要查看配置的 SSH 签名类型,请运行以下命令。
Shell ghe-config github-ssl.ssh-signature-types
ghe-config github-ssl.ssh-signature-types如果这些命令返回空值,则实例使用安全默认值。
设置 SSH 密码
-
通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。
ssh -p 122 admin@HOSTNAME -
使用
ghe-crypto check命令检查所需的 SSH 密码。 将cipher1,cipher2,cipher3替换为逗号分隔的加密列表。Shell ghe-crypto check ssh-ciphers cipher1,cipher2,cipher3
ghe-crypto check ssh-ciphers cipher1,cipher2,cipher3例如:
ghe-crypto check ssh-ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com -
如果密码字符串有效,请设置 SSH 密码。 将
cipher1,cipher2,cipher3替换为你的逗号分隔列表。Shell ghe-config github-ssl.ssh-ciphers 'cipher1,cipher2,cipher3'
ghe-config github-ssl.ssh-ciphers 'cipher1,cipher2,cipher3'例如:
ghe-config github-ssl.ssh-ciphers 'chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com' -
检查配置。
Shell ghe-config-check
ghe-config-check -
若要应用配置,请运行以下命令。
注意
在配置运行过程中,你的 GitHub Enterprise Server 实例 上的服务可能会重启,这可能会导致用户短暂停机。
Shell ghe-config-apply
ghe-config-apply -
等待配置运行完毕。
-
如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。
设置 SSH MAC 算法
-
通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。
ssh -p 122 admin@HOSTNAME -
使用
ghe-crypto check命令检查所需的 SSH MAC 算法。 将mac1,mac2,mac3替换为以逗号分隔的 MAC 算法列表。Shell ghe-crypto check ssh-mac-algorithms mac1,mac2,mac3
ghe-crypto check ssh-mac-algorithms mac1,mac2,mac3例如:
ghe-crypto check ssh-mac-algorithms hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com -
如果 MAC 算法字符串有效,请设置 SSH MAC 算法。 将
mac1,mac2,mac3替换为你的逗号分隔列表。Shell ghe-config github-ssl.ssh-mac-algorithms 'mac1,mac2,mac3'
ghe-config github-ssl.ssh-mac-algorithms 'mac1,mac2,mac3'例如:
ghe-config github-ssl.ssh-mac-algorithms 'hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com' -
检查配置。
Shell ghe-config-check
ghe-config-check -
若要应用配置,请运行以下命令。
注意
在配置运行过程中,你的 GitHub Enterprise Server 实例 上的服务可能会重启,这可能会导致用户短暂停机。
Shell ghe-config-apply
ghe-config-apply -
等待配置运行完毕。
-
如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。
设置 SSH 密钥交换算法
-
通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。
ssh -p 122 admin@HOSTNAME -
使用
ghe-crypto check命令检查所需的 SSH 密钥交换算法。 将kex1,kex2,kex3替换为以逗号分隔的密钥交换算法列表。Shell ghe-crypto check ssh-kex-algorithms kex1,kex2,kex3
ghe-crypto check ssh-kex-algorithms kex1,kex2,kex3例如:
ghe-crypto check ssh-kex-algorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521 -
如果密钥交换算法字符串有效,请设置 SSH 密钥交换算法。 将
kex1,kex2,kex3替换为你的逗号分隔列表。Shell ghe-config github-ssl.ssh-kex-algorithms 'kex1,kex2,kex3'
ghe-config github-ssl.ssh-kex-algorithms 'kex1,kex2,kex3'例如:
ghe-config github-ssl.ssh-kex-algorithms 'curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521' -
检查配置。
Shell ghe-config-check
ghe-config-check -
若要应用配置,请运行以下命令。
注意
在配置运行过程中,你的 GitHub Enterprise Server 实例 上的服务可能会重启,这可能会导致用户短暂停机。
Shell ghe-config-apply
ghe-config-apply -
等待配置运行完毕。
-
如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。
设置 SSH 签名类型
-
通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。
ssh -p 122 admin@HOSTNAME -
使用
ghe-crypto check命令检查所需的 SSH 签名类型。 将sig1,sig2,sig3替换为逗号分隔的签名类型列表。Shell ghe-crypto check ssh-signature-types sig1,sig2,sig3
ghe-crypto check ssh-signature-types sig1,sig2,sig3例如:
ghe-crypto check ssh-signature-types ssh-ed25519,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384 -
如果签名类型字符串有效,请设置 SSH 签名类型。 将
sig1,sig2,sig3替换为你的逗号分隔列表。Shell ghe-config github-ssl.ssh-signature-types 'sig1,sig2,sig3'
ghe-config github-ssl.ssh-signature-types 'sig1,sig2,sig3'例如:
ghe-config github-ssl.ssh-signature-types 'ssh-ed25519,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384' -
检查配置。
Shell ghe-config-check
ghe-config-check -
若要应用配置,请运行以下命令。
注意
在配置运行过程中,你的 GitHub Enterprise Server 实例 上的服务可能会重启,这可能会导致用户短暂停机。
Shell ghe-config-apply
ghe-config-apply -
等待配置运行完毕。
-
如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。
排查密码配置问题
如果客户端在更改加密配置后无法连接到 你的 GitHub Enterprise Server 实例 ,可以对该问题进行排查。
- 检查客户端是否支持配置的 TLS 或 SSH 协议版本。
- 验证至少一个已配置的密码套件是否与客户端兼容。
- 查看实例日志,查找 TLS 握手失败或 SSH 连接错误。 有关访问日志的详细信息,请参阅 关于系统日志。
- 暂时还原默认设置以验证问题是否与密码相关。 有关详细信息,请参阅 还原默认密码套件和算法设置。
- 如果在还原默认值后,问题仍然存在,请联系 GitHub Enterprise 支持。
还原默认密码套件和算法设置
若要还原默认的安全密码套件或算法,请取消设置配置值。
-
通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。
ssh -p 122 admin@HOSTNAME -
重置配置设置。 将
SETTING替换为您要还原为默认值的设置的名称。Shell ghe-config --unset github-ssl.SETTING
ghe-config --unset github-ssl.SETTING例如,若要还原默认 TLS 1.2 密码套件,请执行以下作:
ghe-config --unset github-ssl.tlsv12-ciphersuites -
若要应用配置,请运行以下命令。
注意
在配置运行过程中,你的 GitHub Enterprise Server 实例 上的服务可能会重启,这可能会导致用户短暂停机。
Shell ghe-config-apply
ghe-config-apply -
等待配置运行完毕。
-
如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。