Bagaimana cara menyingkirkan dialog "terima koneksi masuk" firewall?

101

Saya telah menerima ini berkali-kali sehingga firewall seharusnya sudah mengingatnya.

Sebagai contoh, saya mendapatkannya untuk Eclipse ketika memulai program java saya dalam mode debugging ... kadang-kadang dialog ini hanya ditampilkan sangat singkat, seperti setengah detik, dan menghilang. Saya juga mendapatkannya untuk iTunes (ketika saya mengaktifkan berbagi pustaka saya), dan program lainnya, meskipun saya telah mendaftarkannya di panel preferensi Firewall (pengaturan adv.).

Peter Štibraný
sumber
Versi OSX apa yang Anda gunakan?
Martin Marconcini
@ Martin: menambahkan tag macan tutul salju. Saya menggunakan 1.6.4 terbaru dan terbaik.
Peter Štibraný
Perilaku itu sangat aneh untuk pengetahuan saya. Firewall melihat tanda tangan aplikasi untuk mengenalinya, sehingga setiap perubahan dalam aplikasi, berarti ia mungkin tidak lagi dikenali dan dengan demikian akan menyebabkan prompt baru. Leopard lebih rentan terhadap ini daripada 10.6, namun itu masih terjadi dari apa yang Anda katakan.
Martin Marconcini
Saya terbiasa melihat ini sepanjang waktu dengan VirtualBox di Snow Leopard. Saya ingin mendengar penjelasan untuk itu juga.
Ben Wyatt
Sangat menyebalkan. Saya melihat popup beberapa kali per hari saat bekerja di Eclipse. Itu hanya muncul untuk sub-detik atau lebih. Ini terjadi pada Mountain Lion dengan Eclipse Juno SR2.
Gunnar

Jawaban:

12

Ada dua opsi di sini:

  1. Anda cukup memilih "Izinkan Semua" di firewall Anda, atau cukup matikan.
  2. Anda dapat menghapus aplikasi dari daftar, menghapus plistfile untuk aplikasi tersebut, menjalankannya, dan kemudian menambahkannya ke daftar. Plist bertanggung jawab atas banyak perilaku dan saya berani bertaruh upgrade ke OS atau aplikasi dapat menyebabkan "tautan" rusak.

Tentang plistfile ... Plist adalah jenis khusus file teks yang berisi properti aplikasi dan sumber daya lainnya, biasanya OS, digunakan untuk menyimpan dan menggunakan kembali informasi yang diperlukan untuk menjalankan aplikasi. plistadalah jenis file dan memiliki banyak kegunaan, biasanya menyimpan preferensi pengguna, tetapi, pada dasarnya, ini adalah file XML. Anda dapat melihat apakah ada cache, yang biasanya berupa plistfile, untuk aplikasi yang dimaksud dalam /Library/Cachesdan /System/Library/Caches. Ada juga satu ~/Library/Caches/tapi hal-hal buruk bisa terjadi ketika mucking di sana, jadi biarkan saja. Sistem masuk ke folder-folder itu untuk berbagai alasan, dan saya biasanya membersihkan dua folder pertama yang saya daftarkan sebulan sekali.

Philip Regan
sumber
Bisakah Anda jelaskan apa yang Anda maksud dengan "hapus file plist untuk aplikasi itu"?
Peter Štibraný
2
file plist berisi pengaturan aplikasi antara lain (dan aman untuk menghapusnya, tetapi selalu membuat salinan untuk berjaga-jaga). Aplikasi Cocoa apa pun harus diprogram untuk membuat ulang plist sendiri jika file “menghilang”. Plist untuk aplikasi biasanya terletak di / Users / your_user / Library / Preferences. File diakhiri dengan ekstensi .plist dan biasanya memiliki nama seperti: "com.company.appname.plist" misalnya: com.adobe.Phosothop.plist. Anda dapat memindahkannya ke desktop dan meluncurkan aplikasi untuk "menciptakan kembali" itu.
Martin Marconcini
Apakah ~file yang ada di jalur file di atas merujuk ke folder home pengguna saat ini atau direktori root?
2
Diturunkan karena ini bukan pilihan dalam banyak kasus. Komentar user465139 lebih tepat. Meskipun masih merupakan risiko keamanan - setidaknya ini memungkinkan semua aplikasi masuk / keluar.
sholsinger
1
setuju dengan @sholsinger untuk yang ini, hanya menemukan ini untuk Mavericks + PHPStorm dan alternatif penandatanganan sendiri mudah, cepat & berfungsi. Bisnis plist ini agak berantakan.
Alex Weber
61
sudo codesign --force --deep --sign - /path/to/application.app

Saya tidak pernah harus membuat sertifikat menggunakan metode ini.

Jika itu tidak membantu, cobalah tanpa --deepdan tanpa garis miring:

sudo codesign --force --sign - /path/to/application.app

Catatan, hanya untuk membuatnya lebih jelas: Setelah menerapkan tanda tangan, mulai aplikasi, terima koneksi masuk untuk yang terakhir kalinya, lalu berhenti dan mulai lagi untuk memverifikasi bahwa permintaan sudah hilang.

ahall
sumber
5
Saya tahu karena saya melakukannya? Saya tidak yakin persis apa yang Anda minta ... menggunakan metode itu, saya dapat menyingkirkan munculan 'terima pemberitahuan masuk' (meskipun setelah masuk Anda akan ditanya untuk terakhir kalinya, dan kemudian tidak lagi ). Ini berfungsi untuk saya untuk Spotify dan AppCode. Jika Anda perlu info baca halaman manual? sunting: Saya menggunakan Calon Yosemite GM v3.0 jika itu membantu Anda.
ahall
2
Saya ingin mengubah satu detail kecil: aplikasi yang perlu ditangani di bawah / path / ke / app harus berisi akhiran .app , yaitu: /path/to/exampleapp.app.
4
@IconDaemon Penggunaan -after --signberarti bahwa "penandatanganan ad-hoc" digunakan; tidak perlu memiliki sertifikat untuk menggunakan perintah itu. Saya tidak mengerti mengapa ini akan bertentangan dengan penggunaan terminal. Jalankan man codesignuntuk melihat penjelasannya.
Mike
3
Sederhana, dan berhasil. Jauh lebih baik daripada jawaban yang diterima karena saya tidak ingin menghapus file plist.
Justin
2
sudo codesign --force --sign - /path/to/application.apptelah bekerja untuk saya, tetapi bukan variasi yang disarankan oleh penulis. Saya bertanya-tanya apakah --deepatau garis miring adalah masalah.
Jose Alban
61

Meskipun tautan RedYeti bermanfaat, hanya untuk menyimpan beberapa klik untuk orang lain, izinkan saya meringkas cara membuat sertifikat penandatanganan kode dan menggunakannya untuk penandatanganan kode (kembali):

  1. Buat sertifikat penandatanganan kode Anda sendiri:

    • Di Akses Keychain, Akses Keychain> Asisten Sertifikat> Buat sertifikat. Ini meluncurkan Asisten Sertifikat:

    • Nama: Masukkan beberapa string acak di sini yang dapat Anda ingat. Hindari spasi jika tidak, Anda harus keluar dari nama sertifikat saat menggunakan codesigndari baris perintah.

    • Jenis identitas: Self Signed Root

    • Jenis Sertifikat: Penandatanganan Kode

    • Centang kotak "Biarkan saya menimpa default", ini cukup penting

    • Nomor seri: 1 (OK selama kombinasi nama sertifikat / nomor seri adalah unik)

    • Masa Berlaku: 3650 (memberi Anda 10 tahun)

    • Email, Nama, dll. Isi sesuai keinginan.

    • Info pasangan kunci: diatur ke RSA, 2048 bit. Tidak terlalu penting IMHO.

    • Dari "Ekstensi penggunaan utama" hingga "Ekstensi Nama Alternatif Subjek": terima standarnya.

    • Lokasi: gantungan kunci masuk.

    • Setelah dibuat, setel ke "Selalu percaya" di gantungan kunci Login: klik kanan pada sertifikat, pilih "Dapatkan Info", dan di bagian "Kepercayaan", set "Saat menggunakan sertifikat ini" ke "Selalu percaya".

  2. Menandatangani ulang aplikasi: codesign -f --deep -s <certname> /path/to/app

  3. Verifikasi bahwa itu berhasil: codesign -dvvvv /path/to/app

Nikmati!

PEMBARUAN: Orang-orang bertanya kepada saya mengapa ini "tidak berfungsi" di macOS 10.14 "Mojave". Sekarang saya akhirnya memperbarui :-), inilah yang saya pelajari.

Pada dasarnya, jangan gunakan sertifikat yang ditandatangani sendiri untuk menandatangani kode. Hasilkan sertifikat menggunakan Apple ID Anda di Xcode sebagai gantinya. Untuk rekap langkah-langkah singkat:

Dalam Xcode> Preferensi> Akun, pilih ID pengembang Apple Anda, klik "Kelola Sertifikat", pilih "+" di sudut kiri bawah, itu menawarkan Anda opsi "Pengembangan Apple". Pilih itu, ini akan membuat sertifikat untuk Anda. Dengan mengklik-Ctrl pada sertifikat baru Anda dapat mengekspornya (dalam .p12format), dan dengan open-ing .p12file itu akan dimuat ke gantungan kunci Login Anda.

Anda akan melihat bahwa sertifikat ini berlaku selama satu tahun, "Dikeluarkan oleh: Otoritas Sertifikasi Hubungan Pengembang Apple Worldwide". Saya menduga itu lebih dapat dipercaya daripada sertifikat yang ditandatangani sendiri.

Sekarang Anda bisa masuk aplikasi seperti sebelumnya dengan codesign -f -s <apple_ID> /path/to/prog. Saya mencobanya dengan biner sederhana (dikompilasi dari hello.c:-)), dan bisa diverifikasi dengan codesign -v.

Saya belum mencobanya dengan paket Python, jadi saya tidak memiliki saran kepada orang-orang yang disebutkan dalam komentar mereka bahwa ini tidak dapat masuk "python.app".

Laryx Decidua
sumber
4
Terima kasih! Ini adalah satu-satunya solusi yang menyingkirkan dialog cerewet firewall bagi saya. Saya menjalankan OSX 10.10 Yosemite.
Jason
1
sangat bagus! mudah bagi pengembang yang sudah memiliki sertifikat juga!
cwd
1
catatan tambahan: Saya telah memaksimalkan Periode Validitas menjadi 7300 (hari), yaitu 20 tahun. Saya menemukan dengan beberapa percobaan bahwa ini adalah jumlah maksimal yang diterima kotak input (setidaknya pada OSX Yosemite 10.10.3) - sangat baik, pujian!
DavAlPi
Jawaban ahall jauh lebih sederhana dan bekerja untuk saya di OS X 10.10
n1000
Tidak bekerja untuk saya di OS X 10.11.1 (15B42)
suzanshakya
15

Ini terkait dengan apakah aplikasi ditandatangani atau tidak. Jika tidak ditandatangani, preferensi tidak akan diingat.

Untuk melihat apakah aplikasi sudah ditandatangani, lakukan ini di Terminal:

cd path/to/your/app
codesign -vvv Eclipse.app/

Untuk Eclipse - punyaku mengatakan itu tidak masuk sama sekali. Saya tidak dapat berkomentar lebih lanjut tentang cara menandatangani aplikasi karena saya tidak repot-repot untuk melakukan itu, tetapi jawaban tentang superuser ini meliputi:

https://superuser.com/questions/100013/why-does-the-mac-os-x-firewall-dialog-recurringly-pop-up-and-disappear-by-itself#300841

RedYeti
sumber
1
Sementara jawaban ahall memberikan solusi, jawaban ini menjelaskan alasannya. Jika digabung, itu akan menjadi jawaban yang sempurna.
not2savvy
3

Hanya perlu dicatat, jika Anda menggunakan lingkungan Virtual, pastikan untuk menandatangani aplikasi yang sedang digunakan untuk lingkungan. Saya tahu ini jelas, tetapi perlu dikatakan.

flyboy777
sumber
terima kasih banyak tetapi alih-alih aplikasi, bagaimana saya akan menandatangani versi python (katakanlah python3.6) di lingkungan conda?
Agile Bean
1

Saya menghargai bahwa ini adalah Q & A yang lama, tetapi itu adalah hit pertama di google untuk saya ketika saya memiliki masalah yang sama. Hanya ingin menambahkan sesuatu untuk orang lain yang mungkin mendarat di sini.

Untuk menjalankan perintah codesign yang diuraikan di sini, alat baris perintah xcode perlu diinstal. Tanpa ini, seseorang mendapat pesan kesalahan:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

Untuk memperbaikinya, instal alat dengan:

xcode-select install

Saya akan mengomentari posting ahall, tetapi saya tidak memiliki poin reputasi untuk melakukannya.

Pete
sumber
0

Saya mendapatkan kotak dialog ini (Canon ccpd) setiap kali setelah memulai komputer saya. Buka firewall> keamanan dan privasi> buka kunci untuk mengaktifkan perubahan> klik tombol "Aktifkan mode sembunyi-sembunyi"> klik tombol "Blokir semua koneksi masuk".

Tidak ada lagi kotak dialog yang mengiritasi dari driver printer Canon setelah itu.

Doc Olmo
sumber
Tapi aplikasinya tidak akan berfungsi ...
not2savvy
0

Saya mencoba semua hal di atas di Mac 10.13 dan tidak ada yang berhasil.

Pada akhirnya saya menulis sebuah skrip yang berjalan pada logout yang dilampirkan ke kait masuk yang mematikan firewall sehingga ketika login tidak lagi memerlukan izin kemudian menggunakan penundaanluncur menjalankan skrip lain yang menyalakan firewall.

Semuanya baik sekarang

Ash Dean Wells
sumber
Selamat Datang di Tanya Berbeda! Anda mungkin ingin membagikan skrip Anda sehingga pengguna lain juga mendapat untung dari solusi Anda.
Glorfindel
0

Situasi saya melibatkan dua salinan Eclipse yang diinstal pada MacOS Mojave 10.14.5. Salinan pertama diotorisasi dengan firewall MacOS. Salinan kedua akan selalu menyajikan prompt "terima koneksi masuk". Memilih "Terima" akan terus menyajikan pesan setelah setiap reboot, ternyata pengaturan firewall tidak diperbarui.

Solusinya adalah membuka Preferensi Sistem MacOS -> Keamanan & Privasi -> Firewall, buka kunci layar, Opsi Firewall. Pilih Eclipse.app "Izinkan koneksi masuk" dan hapus dengan tombol "-". Kali berikutnya saya memilih permintaan "Izinkan" ke Eclipse "terima koneksi masuk" adalah yang terakhir.

Les Grieve
sumber
-2

Solusi bagi saya adalah menonaktifkan firewall sepenuhnya. Sangat umum untuk membuat perangkat lunak yang diaktifkan web yang tentu saja tidak ditandatangani karena Anda mengompilasinya secara asli.

Buka sorotan dengan CMD + bilah spasi dan cari "privasi" dan pilih "Keamanan dan Privasi". Kemudian beralih ke tab "Firewall" dan nonaktifkan firewall di sana.

anon58192932
sumber
2
Itu sepertinya solusi yang sangat buruk bagi kebanyakan orang kecuali mereka tahu apa yang mereka lakukan. Firewall ada untuk alasan yang baik - bahkan di Mac.
RedYeti
Saya pikir maksud Anda "Firewall menjengkelkan - bahkan pada mac". Tidak semua orang tidak berpendidikan berlarian di jaringan wifi terbuka di bandara dengan semua port-nya terbuka mengunduh virus dari situs distribusi malware. Jawaban saya dengan benar memperbaiki masalah dan menyiasati kotak sembulan konyol Apple yang menjengkelkan. Setiap kali Anda mengkompilasi ulang biner yang menggunakan jaringan Anda mendapatkan popup yang benar-benar tidak dapat dimaafkan. Munculan adalah cara menjengkelkan Apple yang lain untuk mencoba mengasuh orang-orang yang tidak berpendidikan sambil meninggalkan pengembang yang tinggi dan kering.
anon58192932
1
Saya setuju - tidak semua orang tidak berpendidikan. Namun pada subjek ini sebagian besar orang. Bahkan mereka yang tidak seharusnya tahu lebih baik daripada mengeluarkan komponen keamanan jaringan utama. Paling tidak, memperingatkan orang tentang konsekuensi yang mungkin akan baik. Cukup mematikan firewall saya tidak akan dihitung sebagai "memperbaiki" tetapi bekerja sangat kacau.
RedYeti