[asterisk-commits] kmoore: trunk r383167 - in /trunk: ./ channels/ main/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Mar 15 07:53:06 CDT 2013
Author: kmoore
Date: Fri Mar 15 07:53:03 2013
New Revision: 383167
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=383167
Log:
tcptls: Prevent unsupported options from being set
AMI, HTTP, and chan_sip all support TLS in some way, but none of them
support all the options that Asterisk's TLS core is capable of
interpreting. This prevents consumers of the TLS/SSL layer from setting
TLS/SSL options that they do not support.
This also gets tlsverifyclient closer to a working state by requesting
the client certificate when tlsverifyclient is set. Currently, there is
no consumer of main/tcptls.c in Asterisk that supports this feature and
so it can not be properly tested.
Review: https://reviewboard.asterisk.org/r/2370/
Reported-by: John Bigelow
Patch-by: Kinsey Moore
(closes issue AST-1093)
........
Merged revisions 383165 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 383166 from http://svn.asterisk.org/svn/asterisk/branches/11
Modified:
trunk/ (props changed)
trunk/channels/chan_sip.c
trunk/main/http.c
trunk/main/manager.c
trunk/main/tcptls.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-11-merged' - no diff available.
Modified: trunk/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_sip.c?view=diff&rev=383167&r1=383166&r2=383167
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Fri Mar 15 07:53:03 2013
@@ -31646,8 +31646,11 @@
continue;
}
- /* handle tls conf */
- if (!ast_tls_read_conf(&default_tls_cfg, &sip_tls_desc, v->name, v->value)) {
+ /* handle tls conf, don't allow setting of tlsverifyclient as it isn't supported by chan_sip */
+ if (!strcasecmp(v->name, "tlsverifyclient")) {
+ ast_log(LOG_WARNING, "Ignoring unsupported option 'tlsverifyclient'\n");
+ continue;
+ } else if (!ast_tls_read_conf(&default_tls_cfg, &sip_tls_desc, v->name, v->value)) {
continue;
}
Modified: trunk/main/http.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/http.c?view=diff&rev=383167&r1=383166&r2=383167
==============================================================================
--- trunk/main/http.c (original)
+++ trunk/main/http.c Fri Mar 15 07:53:03 2013
@@ -1060,8 +1060,17 @@
v = ast_variable_browse(cfg, "general");
for (; v; v = v->next) {
- /* handle tls conf */
- if (!ast_tls_read_conf(&http_tls_cfg, &https_desc, v->name, v->value)) {
+ /* read tls config options while preventing unsupported options from being set */
+ if (strcasecmp(v->name, "tlscafile")
+ && strcasecmp(v->name, "tlscapath")
+ && strcasecmp(v->name, "tlscadir")
+ && strcasecmp(v->name, "tlsverifyclient")
+ && strcasecmp(v->name, "tlsdontverifyserver")
+ && strcasecmp(v->name, "tlsclientmethod")
+ && strcasecmp(v->name, "sslclientmethod")
+ && strcasecmp(v->name, "tlscipher")
+ && strcasecmp(v->name, "sslcipher")
+ && !ast_tls_read_conf(&http_tls_cfg, &https_desc, v->name, v->value)) {
continue;
}
Modified: trunk/main/manager.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/manager.c?view=diff&rev=383167&r1=383166&r2=383167
==============================================================================
--- trunk/main/manager.c (original)
+++ trunk/main/manager.c Fri Mar 15 07:53:03 2013
@@ -7795,7 +7795,15 @@
for (var = ast_variable_browse(cfg, "general"); var; var = var->next) {
val = var->value;
- if (!ast_tls_read_conf(&ami_tls_cfg, &amis_desc, var->name, val)) {
+ /* read tls config options while preventing unsupported options from being set */
+ if (strcasecmp(var->name, "tlscafile")
+ && strcasecmp(var->name, "tlscapath")
+ && strcasecmp(var->name, "tlscadir")
+ && strcasecmp(var->name, "tlsverifyclient")
+ && strcasecmp(var->name, "tlsdontverifyserver")
+ && strcasecmp(var->name, "tlsclientmethod")
+ && strcasecmp(var->name, "sslclientmethod")
+ && !ast_tls_read_conf(&ami_tls_cfg, &amis_desc, var->name, val)) {
continue;
}
Modified: trunk/main/tcptls.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/tcptls.c?view=diff&rev=383167&r1=383166&r2=383167
==============================================================================
--- trunk/main/tcptls.c (original)
+++ trunk/main/tcptls.c Fri Mar 15 07:53:03 2013
@@ -373,6 +373,11 @@
cfg->enabled = 0;
return 0;
}
+
+ SSL_CTX_set_verify(cfg->ssl_ctx,
+ ast_test_flag(&cfg->flags, AST_SSL_VERIFY_CLIENT) ? SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT : SSL_VERIFY_NONE,
+ NULL);
+
if (!ast_strlen_zero(cfg->certfile)) {
char *tmpprivate = ast_strlen_zero(cfg->pvtfile) ? cfg->certfile : cfg->pvtfile;
if (SSL_CTX_use_certificate_file(cfg->ssl_ctx, cfg->certfile, SSL_FILETYPE_PEM) == 0) {
More information about the asterisk-commits
mailing list