From: Christos Tsantilas Date: Thu, 8 Oct 2015 17:20:27 +0000 (+0300) Subject: %ssl::a %Ss/%03>Hs %request && al->request->errType == ERR_SECURE_CONNECT_FAIL) { - if (! (out = Ssl::GetErrorName(al->request->errDetail))) { - snprintf(tmp, sizeof(tmp), "SSL_ERR=%d", al->request->errDetail); - out = tmp; - } + if (! (out = Ssl::GetErrorName(al->request->errDetail))) + out = sslErrorName(al->request->errDetail, tmp, sizeof(tmp)); } else #endif if (al->request && al->request->errDetail != ERR_DETAIL_NONE) { @@ -1158,6 +1165,24 @@ Format::Format::assemble(MemBuf &mb, const AccessLogEntry::Pointer &al, int logS } break; + case LFT_SSL_SERVER_CERT_ERRORS: + if (al->request && al->request->clientConnectionManager.valid()) { + if (Ssl::ServerBump * srvBump = al->request->clientConnectionManager->serverBump()) { + const char *separator = fmt->data.string ? fmt->data.string : ":"; + for (Ssl::CertErrors *sslError = srvBump->sslErrors; sslError != NULL; sslError = sslError->next) { + if (sb.size()) + sb.append(separator); + if (const char *errorName = Ssl::GetErrorName(sslError->element.code)) + sb.append(errorName); + else + sb.append(sslErrorName(sslError->element.code, tmp, sizeof(tmp))); + } + if (sb.size()) + out = sb.termedBuf(); + } + } + break; + case LFT_SSL_SERVER_CERT_ISSUER: case LFT_SSL_SERVER_CERT_SUBJECT: // Not implemented diff --git a/src/format/Token.cc b/src/format/Token.cc index 8e0b31b49e..3533af12fd 100644 --- a/src/format/Token.cc +++ b/src/format/Token.cc @@ -192,6 +192,7 @@ static TokenTableEntry TokenTableSsl[] = { TokenTableEntry(">sni", LFT_SSL_CLIENT_SNI), /*TokenTableEntry("