首页 > 解决方案 > Docker Ruby SSL_connect 返回=1 errno=0 状态=错误:错误的签名类型

问题描述

我在 Docker 容器中有 ruby​​ 2.7,使用 Faraday 运行一个相当简单的 HTTP 客户端:

conn = Faraday.new("https://jinio.com.ph")
conn.post("/tracker", {p: @code}.to_json, {"Content-Type" => "application/json"})

此代码在容器内返回 SSL 错误“错误的签名类型”。

Faraday::SSLError (SSL_connect returned=1 errno=0 state=error: wrong signature type)

关于如何解决这个问题的任何想法?仅供参考,如果我在 Mac OS 上运行它,代码运行没有错误

我的 Dockerfile 如果这有帮助:

FROM ruby:2.7
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client nano
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app

# Script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000

# Start server
CMD ["rails", "server", "-b", "0.0.0.0"]

标签: rubydockerhttpartyfaraday

解决方案


我有同样的问题,通过更改 Dockerfile 解决了。

FROM ruby:2.7添加后

RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/' /etc/ssl/openssl.cnf

出处(日文):

https://qiita.com/masayuki14/items/c34eafb9d6130e2c5b67


推荐阅读