Я ничего не знаю о языке Go, я просто хотел бы использовать это приложение на Ubuntu 14:Golang - пропустить SSL/x509 проверку и сборку?
Прежде чем делать что-либо, я должен был set the GOPATH environment variable in my ~/.bashrc. Затем README сообщает, что эта программа установлена с:
go get -u github.com/mvdan/fdroidcl/cmd/fdroidcl
Это проходит нормально, и исполняемый файл найден. На самом деле, эти файлы, найденные в доме, где GOPATH
является ~/go
:
$ find ~ -name 'fdroidcl*' 2>/dev/null
/home/myusername/.cache/fdroidcl
/home/myusername/.config/fdroidcl
/home/myusername/go/pkg/gccgo_linux_386/github.com/mvdan/fdroidcl
/home/myusername/go/src/github.com/mvdan/fdroidcl
/home/myusername/go/src/github.com/mvdan/fdroidcl/cmd/fdroidcl
/home/myusername/go/bin/fdroidcl
Nice, но теперь, когда я начинаю начальную команду:
$ fdroidcl updateDownloading https://f-droid.org/repo/index.jar...
update: could not update index: Get https://f-droid.org/repo/index.jar: x509: certificate signed by unknown authority (possibly because of "x509: cannot verify signature: algorithm unimplemented" while trying to verify candidate authority certificate "COMODO RSA Certification Authority")
Это, скорее всего, сбой из-за собственной -подписанный сертификат. Быстрое исправление было бы использовать http://
вместо https://
(в случае f-droid.org
это возможно в настоящее время), поэтому я попытался изменить ~/go/src/github.com/mvdan/fdroidcl/cmd/fdroidcl/main.go
:
var config = userConfig{
Repos: []repo{
{
ID: "f-droid",
//URL: "https://f-droid.org/repo",
URL: "http://f-droid.org/repo",
Enabled: true,
},
{
ID: "f-droid-archive",
//URL: "https://f-droid.org/archive",
URL: "http://f-droid.org/archive",
Enabled: false,
},
},
}
... но команда на самом деле бинарная:
$ file $(which fdroidcl)
~/go/bin/fdroidcl: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=cd1dc87b54f9023983511ef46fda15a4d88dcb2d, not stripped
... что означает, что мне нужно как-то перестроить это приложение из источника, чтобы получить эти изменения - как бы я это сделал?
Кроме того, могут быть другие приложения с самоподписанными сертификатами https, которые могли бы сломаться, поэтому я бы скорее пропустил проверку SSL/X509. Кажется, что, как golang: How to do a https request with bad certificate? указывает, что нужно сделать в коде:
tr := http.DefaultTransport.(*http.Transport)
tr.TLSClientConfig.InsecureSkipVerify = true
... что опять-таки требует взлома/перекомпиляции исходного кода - но это не есть какая-то переменная окружения, чтобы помочь этому , как GIT_SSL_NO_VERIFY
for git
?
Это не вопрос о Go и не очень подходит для SO. Конечно, вы должны перекомпилировать после изменения источника. – Volker
Спасибо @ Волькер, и мне очень жаль тратить ваше время. Что вы предложите, лучше подходит для этого вопроса? Я немедленно пометю его, чтобы он переместился на другой форум. Кстати, я должен перекомпилировать, что я знаю, но с помощью какой команды я спрашиваю? – sdbbs