设置 TLS 连接

如果您想使用安全通道连接 OpenFlow 交换机,您需要使用 TLS 连接。本文档描述了如何配置 OS-Ken 以通过 TLS 连接到 Open vSwitch。

配置公钥基础设施

如果您没有 PKI,Open vSwitch 附带的 ovs-pki 脚本可以帮助您。本节基于 Open vSwitch 源代码中的 INSTALL.SSL。

注意:本文档未描述如何安装 Open vSwitch。请参考 Open vSwitch 文档。

使用 ovs-pki 脚本创建 PKI

% ovs-pki init
(Default directory is /usr/local/var/lib/openvswitch/pki)

pki 目录包含 controllerca 和 switchca 子目录。每个目录包含 CA 文件。

创建控制器私钥和证书

% ovs-pki req+sign ctl controller

ctl-privkey.pem 和 ctl-cert.pem 将在当前目录中生成。

创建交换机私钥和证书

% ovs-pki req+sign sc switch

sc-privkey.pem 和 sc-cert.pem 将在当前目录中生成。

测试 TLS 连接

使用 ovs-vsctl "set-ssl" 命令配置 ovs-vswitchd 以使用 CA 文件,例如:

% ovs-vsctl set-ssl /etc/openvswitch/sc-privkey.pem \
  /etc/openvswitch/sc-cert.pem \
  /usr/local/var/lib/openvswitch/pki/controllerca/cacert.pem
% ovs-vsctl add-br br0
% ovs-vsctl set-controller br0 ssl:127.0.0.1:6633

如果文件名与上述使用的文件名不同,请替换正确的文件名。您应该使用绝对文件名。

使用 CA 文件运行 OS-Ken

% osken-manager --ctl-privkey ctl-privkey.pem \
              --ctl-cert ctl-cert.pem \
              --ca-certs /usr/local/var/lib/openvswitch/pki/switchca/cacert.pem \
              --verbose

您会看到类似如下内容:

loading app os_ken.controller.ofp_handler
instantiating app os_ken.controller.ofp_handler
BRICK ofp_event
  CONSUMES EventOFPSwitchFeatures
  CONSUMES EventOFPErrorMsg
  CONSUMES EventOFPHello
  CONSUMES EventOFPEchoRequest
connected socket:<SSLSocket fileno=4 sock=127.0.0.1:6633 peer=127.0.0.1:61302> a
ddress:('127.0.0.1', 61302)
hello ev <os_ken.controller.ofp_event.EventOFPHello object at 0x1047806d0>
move onto config mode
switch features ev version: 0x1 msg_type 0x6 xid 0xb0bb34e5 port OFPPhyPort(port
_no=65534, hw_addr='\x16\xdc\xa2\xe2}K', name='br0\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00', config=0, state=0, curr=0, advertised=0, supported=0, p
eer=0)
move onto main mode