Skip to content

Commit 248a2fb

Browse files
committed
fix markdown linking issues
1 parent 6a37316 commit 248a2fb

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

_posts/2025-02-05-bug-in-programming-language.md

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ version of OTP was indeed the guilty party.
4646
Since I'm not an expert on certificate validation in Erlang, the error message
4747
we got when making requests to the bank looks cryptic:
4848

49-
```
49+
```text
5050
TLS :client: In state :wait_cert_cr at ssl_handshake.erl:2123 generated CLIENT ALERT: Fatal - Unsupported Certificate
5151
- {:key_usage_mismatch,
5252
{ {:Extension, {2, 5, 29, 15}, true, [:keyCertSign, :cRLSign]},
@@ -87,8 +87,10 @@ identity. Each certificate contains:
8787
Certificates have "extensions" that specify what they can be used for. Two
8888
important ones are:
8989

90-
* Key Usage (KU): Broadly defines what the certificate's key can do (sign things, encrypt things, etc.)
91-
* Extended Key Usage (EKU): More specifically defines the certificate's purpose (web server authentication, email, etc.)
90+
* Key Usage (KU): Broadly defines what the certificate's key can do (sign
91+
things, encrypt things, etc.)
92+
* Extended Key Usage (EKU): More specifically defines the certificate's purpose
93+
(web server authentication, email, etc.)
9294

9395
## The Bug in OTP
9496

@@ -97,8 +99,10 @@ actually specified in the certificate standards (RFC 5280).
9799

98100
In simple terms:
99101

100-
* The certificates from certain CAs like Entrust had a flag set indicating they could sign other certificates (keyCertSign)
101-
* They also had flags set saying they could be used for web server authentication
102+
* The certificates from certain CAs like Entrust had a flag set indicating they
103+
could sign other certificates (keyCertSign)
104+
* They also had flags set saying they could be used for web server
105+
authentication
102106
* OTP thought these two purposes were contradictory and rejected the certificate
103107

104108
It's like if you're qualified as both a teacher and a restaurant chef, but then
@@ -118,9 +122,12 @@ fixed it.
118122

119123
A few interesting lessons from this experience:
120124

121-
1. Hidden Complexity: Even mature, well-tested software like Erlang/OTP can have subtle bugs in complex areas like SSL/TLS.
122-
2. Implementation vs. Specification: The bug wasn't a coding error but an overly strict interpretation of a technical standard.
123-
3. Community Matters: Thanks to the Erlang community for identifying and fixing this issue very quickly.
125+
1. Hidden Complexity: Even mature, well-tested software like Erlang/OTP can have
126+
subtle bugs in complex areas like SSL/TLS.
127+
2. Implementation vs. Specification: The bug wasn't a coding error but an overly
128+
strict interpretation of a technical standard.
129+
3. Community Matters: Thanks to the Erlang community for identifying and fixing
130+
this issue very quickly.
124131

125132
## Summary
126133

0 commit comments

Comments
 (0)