× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

ssl_cert_file

设置SSL隧道加密,设置值为一个文件名字符串,制定cert证书和key私钥的路径。

  • https应用浏览器必须信任证书才能浏览网页
  • wss应用中,发起WebSocket连接的页面必须使用https
  • 浏览器不信任SSL证书将无法使用wss
  • 文件必须为PEM格式,不支持DER格式,可使用openssl工具进行转换

使用SSL必须在编译swoole时加入--enable-openssl选项

$serv = new swoole_server('0.0.0.0', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
$serv->set(array(
    'ssl_cert_file' => __DIR__.'/config/ssl.crt',
    'ssl_key_file' => __DIR__.'/config/ssl.key',
));

PEM转DER格式

openssl x509 -in cert.crt -outform der -out cert.der

DER转PEM格式

openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

  • twtxgd

    貌似不起作用,鄙人设置了错误的文件名,木有任何提示,求解释

  • Rango-韩天峰

    使用SSL必须在编译swoole时加入--enable-openssl选项

  • Jack

    swSSL_accept: SSL_do_handshake() failed.

    我用demo运行的时候会出现这样的内容,是我机器缺什么内容吗?

  • 韩友洪

    /usr/lib/php5/20131226/swoole.so: undefined symbol: SSLv3_server_method in Unknown on line 0

  • kiki

    我现在客户端和服务端可以正常通信,但是客户端关闭的时候,服务端会报[2016-01-14 17:28:16 *13548.2] WARN swFactoryProcess_end: The connection[2] is closing.这样的warning 这是为什么?

  • 残夕

    -enable-openssl 这句话是开启openssl 对吧 我不记得当初装swoole的时候 是否加入了-enable-openssl 但是我看了phpinfo 是enable的 openssl是开启的 并且加载了ssl 这种情况下 我还是wss连接不上socket服务器,这种情况下是什么原因呢 必须得在编译swoole的时候加上-enable-openssl才可以吗

  • jack

    怎么知道swoole时加入--enable-openssl选项是否加入成功

  • 风在山里

    php --ri swoole 查看

  • 雀牌传说

    希望对看到的人有帮助,对于wss链接不上的问题,配置nginx反向代理 server { listen 4431;//nginx监听端口,wss链接的端口

    ssl on; ssl_certificate /etc/nginx/conf.d/ssl/server.pem; ssl_certificate_key /etc/nginx/conf.d/ssl/laychat/server.key; ssl_session_timeout 5m; ssl_session_cache shared:SSL:50m; ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

    location / { proxy_pass http://127.0.0.1:8282;//websocket server 监听的端口,反向代理 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header X-Real-IP $remote_addr; } }

  • 格桑花

    请问韩大神,可以同时支持 http和https吗?

  • 格桑花

    韩大神,可以同时支持 ssl和非ssl的吗?因现在项目升级,老的APP都是用了非ssl连接的方式,服务想升级到ssl的形式。

  • iPart/Pamela(饼乾)

    apache 的設置 SSLCertificateFile => ssl_cert_file SSLCertificateKeyFile => ssl_key_file SSLCertificateChainFile => ??

    最下面這條要怎麼轉呀?

  • iPart/Pamela(饼乾)

    apache 的設置 - SSLCertificateFile => ssl_cert_file - SSLCertificateKeyFile => ssl_key_file - SSLCertificateChainFile => ??

    最下面這條要怎麼轉呀?

  • ミ﹏单身的理由

    重新加上 --enable-openssl 编译安装后 websocket连接时还是一样报连接超时,是怎么回事啊

  • ミ﹏单身的理由

    swoole

    swoole support => enabled Version => 2.0.5 Author => tianfeng.han[email: mikan.tenny@gmail.com] epoll => enabled eventfd => enabled timerfd => enabled signalfd => enabled cpu affinity => enabled spinlock => enabled rwlock => enabled async http/websocket client => enabled Linux Native AIO => enabled pcre => enabled zlib => enabled mutex_timedlock => enabled pthread_barrier => enabled

    Directive => Local Value => Master Value swoole.aio_thread_num => 2 => 2 swoole.display_errors => On => On swoole.use_namespace => On => On swoole.message_queue_key => 0 => 0 swoole.unixsock_buffer_size => 8388608 => 8388608 好像始终编译不上去

  • ミ﹏单身的理由

    问题己解决,重新下载一个最新版本,编译安装解决

  • 傲雪孤魂

    @格桑花 使用nginx反向代理 开俩端口,一个 ssl, 一个 非 ssl,然后 nginx 反向代理,将 ssl 端口 指向 非 ssl 端口,这样代码基本无修改

  • 新用户(手机注册)

    如果证书文件使用DER格式的会出现什么问题呢?是百分百会在认证时候失败还是说会概率性失败?

  • 18616843033

    执行 php --ri swoole, 看到 openssl => OpenSSL 1.0.2k-fips 26 Jan 2017 这个表示 ssl enabled 了么。可还是提示:

    failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR
    WebSocket is already in CLOSING or CLOSED state.
    

  • 新用户(手机注册)

    WARNING swSSL_accept: SSL_do_handshake() failed. Error: [5|104]. 遇到这个错误 有没有指点下的

  • 15858116979

    openssl => OpenSSL 1.0.2k-fips 26 Jan 2017 这个表示 ssl enabled 了吗?