美文网首页
mosquitto 配置 OpenSSL

mosquitto 配置 OpenSSL

作者: 码掺和_夏尼 | 来源:发表于2019-03-15 19:42 被阅读0次

    最近做MQTT的开发,需要加OpenSSL功能,记录下来方便回顾

    1.配置相关证书

    1.1 生成ca证书和key

    openssl req -new -x509 -days 36500 -keyout ca.key -out ca.crt

    键入命令输出如下:

    Generating a RSA private key
    .............................................................+++++
    .........................................................................+++++
    writing new private key to 'ca.key'
    Enter PEM pass phrase: 【输入CA私钥密码,后面签名会用】
    Verifying - Enter PEM pass phrase:【再次输入】
    ——-----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    ——-----
    Country Name (2 letter code) [AU]:【国家代码,两个字母】
    State or Province Name (full name) [Some-State]:【省】
    Locality Name (eg, city) []:【市】
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:【公司】
    Organizational Unit Name (eg, section) []:【组织名,可以不填】
    Common Name (e.g. server FQDN or YOUR name) []:【可以不填,但是一定不要和sever、client端证书的这个字段相同】
    Email Address []:【邮件,随意填写】

    1.2 配置server端的相关证书

    1.2.1 server私钥文件

    openssl genrsa -out server.key 2048
    注:moquitto服务端最好不要设置密码会导致无法连接,如果是自行开发的服务端可以使用密码:openssl genrsa -des3 -out server.key 2048

    1.2.2 server证书请求文件

    openssl req -out server.csr -key server.key -new

    键入指令输出如下:

    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    ——-----
    Country Name (2 letter code) [AU]:【国家代码】
    State or Province Name (full name) [Some-State]:【省】
    Locality Name (eg, city) []:【市】
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:test_sdk
    Organizational Unit Name (eg, section) []:【组织名,可不填】
    Common Name (e.g. server FQDN or YOUR name) []:【服务端所在IP或域名】
    Email Address []:【邮件,随意填写】
    ——
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:【可不填】
    An optional company name []:【可不填】

    1.2.3 自签名server证书

    openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 36500

    键入命令输出如下:

    Signature ok
    subject=....【这里是上面证书请求文件输入的内容】
    Enter pass phrase for ca.key:【这里输入CA私钥的密码】

    1.3 配置client端相关证书

    配置步骤和【server】端相同,但是私钥文件可以使用密码,因为我们可以在开发时可以设置私钥使用的密码

    2.配置mosquitto

    修改mosquitto.conf配置文件

    端口:
    port 8883
    ——
    ca文件绝对路径:
    cafile /Users/xxx/Desktop/ssl_1.1.0j/openssl_0315/ca.crt
    ——
    server端证书文件绝对路径:
    certfile /Users/xxx/Desktop/ssl_1.1.0j/openssl_0315/server.crt
    ——
    server端私钥文件绝对路径:
    keyfile /Users/xxx/Desktop/ssl_1.1.0j/openssl_0315/server.key
    ——
    如果是使用【mosquitto_sub/mosquitto_pub】简单测试可以设置下面两项:
    require_certificate true
    use_identity_as_username true
    ——
    到此已经配置完成了,启动服务端、sub、pub就可以了,如果客户端私钥设置了密码则启动时需要输入密码

    启动sub:mosquitto_sub -h 【ip或域名】 -p 【端口】 -t 【主题】 --cafile 【ca证书文件路径】 --cert 【client证书文件路径】 --key 【client私钥文件路径】
    |
    启动pub:mosquitto_pub -h【ip或域名】 -p 【端口】 -t 【主题】 -m 【消息】--cafile 【ca证书文件路径】 --cert 【client证书文件路径】 --key 【client私钥文件路径】

    注意:如果是单向认证,则需要把服务端的【require_certificate 】设置为‘false’或注释掉,然后mosquitto的‘sub’、‘pub’客户端的参数中去掉【--cert】和【--key】两个参数即可,【CA】证书则服务和客户端要一致,要设置都设置否则都不设置,即【--cafile】参数根据设置决定添加与否


    如果是自己实现的实现pub、sub功能且需要【用户名、密码】则需要设置【password_file】文件,将【require_certificate】、【use_identity_as_username】设置为【false或者注释掉】。
    使用【mosquitto_passwd】生成的【用户名、密码】时则可以在上面启动subpub命令后添加参数 "-u 【用户名】 -P 【密码】",这里的“P”是大写的,小写表示端口。

    相关文章

      网友评论

          本文标题:mosquitto 配置 OpenSSL

          本文链接:https://www.haomeiwen.com/subject/rqyrmqtx.html