syslog日志

目录
  1. syslog日志格式
  2. TLS编程
    1. 小贴士

syslog日志格式

header(信息长度mes_len) “SYSLOGPRO_VERSION TIMESTAMP FQDN/IP APP_NAME PROC_ID(pid) MSGID STRUCTURED_DATA BOM(\xEF\BB\xBF) MSG”

  • header: “”里面的信息长度
  • PRI=logFacility * 8 + logLevel
  • SYSLOGPRO_VERSION: syslog protocol version(such as: 1)
  • TIMESTAMP:时间戳 如,2017-01-01T00:00:00.000000+02:00 (最多精确到us)
  • STRUCTURED_DATA:结构化数据
  • BOM:指出编码为UTF8
  • MSG:信息主体

TLS编程

利用openssl库提供的ssl编程接口,可以容易实现TLS交互,其客户端编程步骤如下:

  1. 创建socket,调用connect连接服务端
  2. 调用SSL_CTX_new创建SSL context,调用SSL_set_verify设置证书校验回调函数,可以定制一些特殊的校验场景;SSL_set_cipher_list设置客户端的加密套件等操作
  3. 调用SSL_new创建SSL结构,调用SSL_set_fd,SSL_connect进行TLS握手,然后调用 SSL_set_connect_state 设置ssl工作在客户端模式
  4. 调用SSL_read/SSL_write进行读写操作
  5. 交互完成后,调用SSL_shutdown、SSL_free等进行清理工作

详细例子可以参考openssl中的apps/s_server.c s_client.c的实现


小贴士

如何设置使用TLS的版本?
Ans: If you only want to allow TLSv1.2 and TLSv1.0 handshakes you will need to try a connection with the TLSv1_2_client_method and then by TLSv1_client_method. You can also use SSLv23_client_method to negotiate only TLSv1.2 and TLSv1.0 using an SSLv2 handshake by explicitly disabling SSLv2, SSLv3 and TLSv1.1 using SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|SSL_OP_NO_TLSv1_1).

本站总访问量