Skip to content

Commit c533991

Browse files
Expanded minimum RSA Keylength to 3072 (#26604)
German Federal Office for Information Security requests in its technical guideline BSI TR-02102-1 RSA Keylength not shorter than 3000bits starting 2024, in the year 2023 3000bits as a recommendation. Gitea should request longer RSA Keys by default in favor of security and drop old clients which do not support longer keys. https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR02102/BSI-TR-02102.pdf?__blob=publicationFile&v=9 - Page 19, Table 1.2 --------- Co-authored-by: wxiaoguang <[email protected]>
1 parent 2401e6e commit c533991

File tree

10 files changed

+12
-9
lines changed

10 files changed

+12
-9
lines changed

cmd/cert.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ Outputs to 'cert.pem' and 'key.pem' and will overwrite existing files.`,
4343
},
4444
&cli.IntFlag{
4545
Name: "rsa-bits",
46-
Value: 2048,
46+
Value: 3072,
4747
Usage: "Size of RSA key to generate. Ignored if --ecdsa-curve is set",
4848
},
4949
&cli.StringFlag{

custom/conf/app.example.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1339,7 +1339,7 @@ LEVEL = Info
13391339
;; Define allowed algorithms and their minimum key length (use -1 to disable a type)
13401340
;ED25519 = 256
13411341
;ECDSA = 256
1342-
;RSA = 2047 ; we allow 2047 here because an otherwise valid 2048 bit RSA key can be reported as having 2047 bit length
1342+
;RSA = 3071 ; we allow 3071 here because an otherwise valid 3072 bit RSA key can be reported as having 3071 bit length
13431343
;DSA = -1 ; set to 1024 to switch on
13441344

13451345
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

docker/root/etc/s6/openssh/setup

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fi
1111

1212
if [ ! -f /data/ssh/ssh_host_rsa_key ]; then
1313
echo "Generating /data/ssh/ssh_host_rsa_key..."
14-
ssh-keygen -t rsa -b 2048 -f /data/ssh/ssh_host_rsa_key -N "" > /dev/null
14+
ssh-keygen -t rsa -b 3072 -f /data/ssh/ssh_host_rsa_key -N "" > /dev/null
1515
fi
1616

1717
if [ ! -f /data/ssh/ssh_host_ecdsa_key ]; then

docs/content/administration/command-line.en-us.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ directory and will overwrite any existing files.
313313
- `--ecdsa-curve value`: ECDSA curve to use to generate a key. Optional. Valid options
314314
are P224, P256, P384, P521.
315315
- `--rsa-bits value`: Size of RSA key to generate. Optional. Ignored if --ecdsa-curve is
316-
set. (default: 2048).
316+
set. (default: 3072).
317317
- `--start-date value`: Creation date. Optional. (format: `Jan 1 15:04:05 2011`).
318318
- `--duration value`: Duration which the certificate is valid for. Optional. (default: 8760h0m0s)
319319
- `--ca`: If provided, this cert generates it's own certificate authority. Optional.

docs/content/administration/command-line.zh-cn.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ menu:
295295
- 选项:
296296
- `--host value`:逗号分隔的主机名和IP地址列表,此证书适用于这些主机。支持使用通配符。必填。
297297
- `--ecdsa-curve value`:用于生成密钥的ECDSA曲线。可选。有效选项为P224、P256、P384、P521。
298-
- `--rsa-bits value`:要生成的RSA密钥的大小。可选。如果设置了--ecdsa-curve,则忽略此选项。(默认值:2048)。
298+
- `--rsa-bits value`:要生成的RSA密钥的大小。可选。如果设置了--ecdsa-curve,则忽略此选项。(默认值:3072)。
299299
- `--start-date value`:证书的创建日期。可选。(格式:`Jan 1 15:04:05 2011`)。
300300
- `--duration value`:证书有效期。可选。(默认值:8760h0m0s)
301301
- `--ca`:如果提供此选项,则证书将生成自己的证书颁发机构。可选。

docs/content/administration/config-cheat-sheet.en-us.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,7 @@ Define allowed algorithms and their minimum key length (use -1 to disable a type
681681

682682
- `ED25519`: **256**
683683
- `ECDSA`: **256**
684-
- `RSA`: **2047**: We set 2047 here because an otherwise valid 2048 RSA key can be reported as 2047 length.
684+
- `RSA`: **3071**: We set 3071 here because an otherwise valid 3072 RSA key can be reported as 3071 length.
685685
- `DSA`: **-1**: DSA is now disabled by default. Set to **1024** to re-enable but ensure you may need to reconfigure your SSHD provider
686686

687687
## Webhook (`webhook`)

docs/content/administration/config-cheat-sheet.zh-cn.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ Gitea 创建以下非唯一队列:
648648

649649
- `ED25519`**256**
650650
- `ECDSA`**256**
651-
- `RSA`**2047**:我们在这里设置为2047,因为一个其他方面有效的2048 RSA密钥可能被报告为2047长度
651+
- `RSA`**3071**:我们在这里设置为2047,因为一个其他方面有效的3072 RSA密钥可能被报告为3071长度
652652
- `DSA`**-1**:默认情况下禁用DSA。设置为**1024**以重新启用,但请注意可能需要重新配置您的SSHD提供者
653653

654654
## Webhook (`webhook`)

modules/activitypub/user_settings.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"code.gitea.io/gitea/modules/util"
99
)
1010

11-
const rsaBits = 2048
11+
const rsaBits = 3072
1212

1313
// GetKeyPair function returns a user's private and public keys
1414
func GetKeyPair(user *user_model.User) (pub, priv string, err error) {

modules/setting/ssh.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ var SSH = struct {
6060
ServerMACs: []string{"[email protected]", "hmac-sha2-256", "hmac-sha1"},
6161
KeygenPath: "",
6262
MinimumKeySizeCheck: true,
63-
MinimumKeySizes: map[string]int{"ed25519": 256, "ed25519-sk": 256, "ecdsa": 256, "ecdsa-sk": 256, "rsa": 2047},
63+
MinimumKeySizes: map[string]int{"ed25519": 256, "ed25519-sk": 256, "ecdsa": 256, "ecdsa-sk": 256, "rsa": 3071},
6464
ServerHostKeys: []string{"ssh/gitea.rsa", "ssh/gogs.rsa"},
6565
AuthorizedKeysCommandTemplate: "{{.AppPath}} --config={{.CustomConf}} serv key-{{.Key.ID}}",
6666
PerWriteTimeout: PerWriteTimeout,

tests/integration/api_httpsig_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import (
1111
"testing"
1212

1313
auth_model "code.gitea.io/gitea/models/auth"
14+
"code.gitea.io/gitea/modules/setting"
1415
api "code.gitea.io/gitea/modules/structs"
16+
"code.gitea.io/gitea/modules/test"
1517
"code.gitea.io/gitea/tests"
1618

1719
"github.com/go-fed/httpsig"
@@ -52,6 +54,7 @@ fhTNAzWwZoQ91aHdAAAAFHUwMDIyMTQ2QGljdHMtcC1ueC03AQIDBAUG
5254
func TestHTTPSigPubKey(t *testing.T) {
5355
// Add our public key to user1
5456
defer tests.PrepareTestEnv(t)()
57+
defer test.MockVariableValue(&setting.SSH.MinimumKeySizeCheck, false)()
5558
session := loginUser(t, "user1")
5659
token := url.QueryEscape(getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser))
5760
keysURL := fmt.Sprintf("/api/v1/user/keys?token=%s", token)

0 commit comments

Comments
 (0)