mirror of
https://github.com/fatedier/frp.git
synced 2026-05-15 08:05:49 -06:00
[GH-ISSUE #4592] Certificate Revocation List (CRL) Not Being Enforced in TLS Verification #3630
Labels
No labels
In Progress
WIP
WaitingForInfo
bug
doc
duplicate
easy
enhancement
future
help wanted
invalid
lifecycle/stale
need-issue-template
need-usage-help
no plan
proposal
pull-request
question
todo
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/frp#3630
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @dineshimatrix on GitHub (Dec 17, 2024).
Original GitHub issue: https://github.com/fatedier/frp/issues/4592
Bug Description
Description
The FRP server is not enforcing Certificate Revocation List (CRL) checks during TLS handshake, allowing revoked client certificates to establish connections successfully.
Environment
Current Behavior
When a client certificate is revoked and listed in the CRL, the FRP server still accepts connections from clients using that revoked certificate. This happens despite:
Expected Behavior
The FRP server should reject connections from clients presenting revoked certificates during the TLS handshake.
frpc Version
0.54.0
frps Version
0.54.0
System Architecture
ubuntu/amd64 on server and debian/arm64 on client
Configurations
Server side frps.toml
bindAddr = "0.0.0.0"
bindPort = 7000
auth.token = "***********************************"
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
security.tls.certFile = "/etc/frp/ssl/cert.pem"
security.tls.keyFile = "/etc/frp/ssl/server.key"
security.tls.trustedCaFile = "/etc/frp/ssl/ca.pem"
security.tls.clientCrlFile = "/etc/frp/ssl/ca.crl.der"
security.tls.serverName = "frp.server"
security.tlsOnly = true
security.tls.requireAndVerifyClientCert = true
security.tls.verifyDepth = 1
allowPorts = [
{ start = 2201, end = 2300 },
{ start = 8001, end = 8100 }
]
log.to = "console"
log.level = "debug"
Client side frpc.toml
serverAddr = "MY_SERVER_PUBLIC_IP"
bindPort = 7000
auth.token = "*****************************************"
security.tls.certFile = "/etc/frp/ssl/test-client.crt"
security.tls.keyFile = "/etc/frp/ssl/test-client.key"
security.tls.trustedCaFile = "/etc/frp/ssl/ca.pem"
security.tls.serverName = "frp.server"
security.tlsOnly = true
proxies
name = "test-client"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 2201
log.to = "console"
log.level = "info"
Logs
OpenSSL verification shows certificate is revoked
$ openssl verify -CAfile ca.pem -crl_check_all -CRLfile ca.crl test-client.crt
CN = test-client
error 23 at 0 depth lookup: certificate revoked
error test-client.crt: verification failed
Server Logs show successful connection despite revocation
2024/12/17 02:59:22 [I] [root.go:105] frps uses config file: /etc/frp/frps.toml
2024/12/17 02:59:22 [I] [service.go:225] frps tcp listen on 0.0.0.0:7000
2024/12/17 02:59:22 [I] [root.go:114] frps started successfully
2024/12/17 03:15:07 [I] [service.go:563] [client_id] client login info: ip [x.x.x.x:port] version [0.54.0] hostname [] os [linux] arch [arm64]
Certificate details
Certificate Serial: 02:e1:81:f4:11:6f:a2:27:88:28:9e:98:b8:f7:be:8b:bc:60:88:4b
Listed in CRL with same serial number (confirmed revoked)
Additional Information
Steps to reproduce
Steps to Reproduce
@fatedier commented on GitHub (Dec 17, 2024):
What is the typical behavior in other common proxies?
@dineshimatrix commented on GitHub (Dec 17, 2024):
Hi @fatedier , Thanks for your reply. I didn't tested it in other proxies. but i checked in Chatgpt and found as,
@dineshimatrix commented on GitHub (Dec 19, 2024):
Hi @fatedier ,
Please any update here.
Thanks
@fatedier commented on GitHub (Dec 20, 2024):
We use the default behavior of the Go standard library and currently do not plan to support this feature, unless there is a widely used proxy service we can refer to.