wget, самоподписанные сертификаты и пользовательский сервер HTTPS

Как предыдущие указанные ответы, это - последствие выполнения арифметики с плавающей точкой.

Как предыдущий предложенный плакат, Когда Вы делаете числовые вычисления, использование java.math.BigDecimal.

Однако существует глюк к использованию BigDecimal. Когда Вы преобразовываете от двойного значения до BigDecimal, у Вас есть выбор использования нового BigDecimal(double) конструктор или BigDecimal.valueOf(double) статический метод фабрики. Используйте статический метод фабрики.

двойной конструктор преобразовывает всю точность double к BigDecimal, в то время как статическая фабрика эффективно преобразовывает ее в String, затем преобразовывает это в BigDecimal.

Это становится релевантным при столкновении с теми тонкими погрешностями округления. Число могло бы отобразиться как.585, но внутренне его значение '0.58499999999999996447286321199499070644378662109375'. Если бы Вы использовали BigDecimal конструктор, Вы получили бы число, которое не равно 0,585, в то время как статический метод дал бы Вам значение, равное 0,585.

double value = 0.585;
System.out.println(new BigDecimal(value));
System.out.println(BigDecimal.valueOf(value));

в моей системе дает

0.58499999999999996447286321199499070644378662109375
0.585
10
задан CajunLuke 17 April 2012 в 23:06
поделиться

2 ответа

Я проверил страницу руководства wget , и - сертификат без проверки , похоже, влияет только на сертификат сервера ]. Вам необходимо указать свой самозаверяющий сертификат в качестве действующего сертификата CA локально.

Для этого укажите сертификат как - ca-certificate = ... в wget и -CAfile в случае s_client .

11
ответ дан 3 December 2019 в 22:00
поделиться

Вы также можете установить доверенные корневые сертификаты CA в OpenSSL в одном из нескольких способов:

  • Поместите свой сертификат CA в / etc / pki / tls / certs или эквивалентный каталог, то создать ссылка на основе хеша сертификата. См. http://gagravarro.org/writing/Openssl-certs/Others.shtml#ca-openssl для деталей.
  • Добавьте свой сертификат CA на /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/tls/cert.pem или эквивалентный CA Bundle.
5
ответ дан 3 December 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: