I don't know enough of your operational context, but for some 
organizations, someone hitting your servers with old
certs like that could be considered a potentially malicious attack, and 
"working around it" by turning
off the check might expose you to deeper vulnerabilities--that you might 
better wish to avoid.

On Thursday, June 12, 2025 at 4:42:01 AM UTC+1 Jason E. Aten wrote:

> Maybe the TLS clients are providing certs too, and those are old?
>
> On Thursday, June 12, 2025 at 4:33:55 AM UTC+1 Jason E. Aten wrote:
>
>> https://pkg.go.dev/crypto/x509#ParseCertificate
>>
>>
>> https://stackoverflow.com/questions/79061981/failed-to-parse-certificate-from-server-x509-negative-serial-number
>>
>>
>> https://cs.opensource.google/go/go/+/refs/tags/go1.24.4:src/crypto/x509/parser.go;l=926
>>
>> says
>>
>> serial := new(big.Int)
>> if !tbs.ReadASN1Integer(serial) {
>> return nil, errors.New("x509: malformed serial number")
>> }
>> if serial.Sign() == -1 {
>> if x509negativeserial.Value() != "1" {
>> return nil, errors.New("x509: negative serial number")
>> }
>>
>>  so you could run tbs.ReadASN1Integer 
>> on your certs serial numbers to see which if any are old...
>>
>> var tbs cryptobyte.String seems to imply it is using 
>> "golang.org/x/crypto/cryptobyte"
>> so that code would be, in the v0.39.0 version,
>>
>> https://cs.opensource.google/go/x/crypto/+/refs/tags/v0.39.0:cryptobyte/asn1.go;l=273
>>
>>
>> On Wednesday, June 11, 2025 at 10:36:55 PM UTC+1 David Karr wrote:
>>
>>> This may be better asked in a k8s forum, but I'm not aware of a good 
>>> one, and as I've never seen this anywhere but in Go applications, perhaps 
>>> someone here will know about this.
>>>
>>> In our enterprise, we have a bunch of k8s clusters.  I have a bunch of 
>>> Go code using the k8s client api to get data from those clusters. For some 
>>> reason, when I attempt to connect to some of those clusters, I get a 
>>> "negative serial number" error.  After some digging, I found that adding 
>>> "godebug (x509negativeserial=1)" to your go.mod will work around this 
>>> problem.
>>>
>>> The thing is, I also wrote some code that examines the cluster cert and 
>>> its serial number, and in the cases where I've gotten this error, I've 
>>> never found a serial number that was negative. Perhaps it's negative if 
>>> it's assumed to be a limited number of bits?  I have no idea.
>>>
>>> I also saw this error today when someone tried to run "helm" to get 
>>> something on an external web site, and after I did "export 
>>> GODEBUG=x509negativeserial=1", that resolved that problem.
>>>
>>> Anyone know anything about this?
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/397a7b61-a21f-4d5e-9f0c-4b85a2fa116fn%40googlegroups.com.

Reply via email to